diff options
author | Daniel Thornburgh <mysterymath@gmail.com> | 2021-12-09 12:00:05 -0800 |
---|---|---|
committer | Amara Emerson <amara@apple.com> | 2021-12-09 12:38:16 -0800 |
commit | 2717f62c97cf134b4ef7bd5b03e046ebf3f5efc2 (patch) | |
tree | 0d8e6ad21e178ebcca51582c706ed5baae349e79 /clang/lib/Frontend/CompilerInvocation.cpp | |
parent | 5e171cebd3bafbf39cdad6294fe26c3952aedbc3 (diff) | |
download | llvm-2717f62c97cf134b4ef7bd5b03e046ebf3f5efc2.zip llvm-2717f62c97cf134b4ef7bd5b03e046ebf3f5efc2.tar.gz llvm-2717f62c97cf134b4ef7bd5b03e046ebf3f5efc2.tar.bz2 |
[GlobalISel] Make G_PTR_ADD pattern matcher non-commutative.
G_PTR_ADD takes arguments of two different types, so it probably shouldn't be
considered commutative just on that basis. A recent G_PTR_ADD reassociation
optimization (https://reviews.llvm.org/D109528) can emit erroneous code if the
pattern matcher commutes the arguments; this can happen when the base pointer
was created by G_INTTOPTR of a G_CONSTANT and the offset register is variable.
This was discovered on the llvm-mos fork, but I added a failing test case that
should apply to AArch64 (and more generally).
Differential Revision: https://reviews.llvm.org/D114655
Diffstat (limited to 'clang/lib/Frontend/CompilerInvocation.cpp')
0 files changed, 0 insertions, 0 deletions