[libcxx-commits] [PATCH] D96966: [libc++] Remove temporary stack-allocated array pointer

Dominic Chen via Phabricator via libcxx-commits libcxx-commits at lists.llvm.org
Thu Feb 18 14:31:59 PST 2021


ddcc added a comment.

Here is the IR output for a small example, in the `_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6__zeroEv` function: https://godbolt.org/z/174Pav

At O0, the reference to `__a` is lowered as a stack-allocated temporary array pointer, which stores the value of `__r_.first().__r.__words`. Then, it is loaded back out from `__a` in every iteration of the loop body and combined with `__i` in a GEP expression. This change does remove the temporary from being emitted at O0, although the mem2reg pass does eliminate it at higher optimization levels.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D96966/new/

https://reviews.llvm.org/D96966



More information about the libcxx-commits mailing list