aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/Frontend/CompilerInvocation.cpp
diff options
context:
space:
mode:
authorAmara Emerson <aemerson@apple.com>2020-05-29 12:30:20 -0700
committerAmara Emerson <aemerson@apple.com>2020-06-01 16:00:55 -0700
commit19ff00dab875d6184618c756df01b57acb908e82 (patch)
tree2f35a69a2d641eadf9c3c018ebf34e84c1832473 /clang/lib/Frontend/CompilerInvocation.cpp
parent776708b00bddb01f91b8d44f6853770966d335a5 (diff)
downloadllvm-19ff00dab875d6184618c756df01b57acb908e82.zip
llvm-19ff00dab875d6184618c756df01b57acb908e82.tar.gz
llvm-19ff00dab875d6184618c756df01b57acb908e82.tar.bz2
[AArch64] Fix CollectLOH creating an AdrpAdd LOH when there's a live used reg
between the two instructions. If there's a pattern like: $xA = ADRP foo @PAGE [some killing use of reg Xb] $Xb = ADDXri $Xa, 0, @PAGEOFF CollectLOH would create an AdrpAdd LOH that resulted in the linker optimizing this sequence into: $xB = ADR foo [some killing use of reg $Xb] ... and therefore clobbers the live $Xb register that was used by the instruction in between. This was discovered by a GlobalISel patch D78465 which broke up global variable accesses into two pseudos, which in some cases could be moved apart. Differential Revision: https://reviews.llvm.org/D80834
Diffstat (limited to 'clang/lib/Frontend/CompilerInvocation.cpp')
0 files changed, 0 insertions, 0 deletions