diff options
author | Daniel Sanders <daniel_l_sanders@apple.com> | 2019-11-14 12:11:00 -0800 |
---|---|---|
committer | Daniel Sanders <daniel_l_sanders@apple.com> | 2019-11-14 12:11:27 -0800 |
commit | b2839c442e26ce5c1453f4d081a541fe43d22599 (patch) | |
tree | 99d467f31653a2d64f68c60ccb154a38a9e9372d /llvm/lib/CodeGen/GlobalISel | |
parent | f2e65447b3cb6340883957e033e77095a025ebdc (diff) | |
download | bcm5719-llvm-b2839c442e26ce5c1453f4d081a541fe43d22599.tar.gz bcm5719-llvm-b2839c442e26ce5c1453f4d081a541fe43d22599.zip |
[globalisel][irtanslator] The IRTranslator should preserve TBAA information
Diffstat (limited to 'llvm/lib/CodeGen/GlobalISel')
-rw-r--r-- | llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp b/llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp index 7999d0fca0e..3f2826cda63 100644 --- a/llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp +++ b/llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp @@ -890,9 +890,11 @@ bool IRTranslator::translateLoad(const User &U, MachineIRBuilder &MIRBuilder) { MachinePointerInfo Ptr(LI.getPointerOperand(), Offsets[i] / 8); unsigned BaseAlign = getMemOpAlignment(LI); + AAMDNodes AAMetadata; + LI.getAAMetadata(AAMetadata); auto MMO = MF->getMachineMemOperand( Ptr, Flags, (MRI->getType(Regs[i]).getSizeInBits() + 7) / 8, - MinAlign(BaseAlign, Offsets[i] / 8), AAMDNodes(), Ranges, + MinAlign(BaseAlign, Offsets[i] / 8), AAMetadata, Ranges, LI.getSyncScopeID(), LI.getOrdering()); MIRBuilder.buildLoad(Regs[i], Addr, *MMO); } @@ -931,9 +933,11 @@ bool IRTranslator::translateStore(const User &U, MachineIRBuilder &MIRBuilder) { MachinePointerInfo Ptr(SI.getPointerOperand(), Offsets[i] / 8); unsigned BaseAlign = getMemOpAlignment(SI); + AAMDNodes AAMetadata; + SI.getAAMetadata(AAMetadata); auto MMO = MF->getMachineMemOperand( Ptr, Flags, (MRI->getType(Vals[i]).getSizeInBits() + 7) / 8, - MinAlign(BaseAlign, Offsets[i] / 8), AAMDNodes(), nullptr, + MinAlign(BaseAlign, Offsets[i] / 8), AAMetadata, nullptr, SI.getSyncScopeID(), SI.getOrdering()); MIRBuilder.buildStore(Vals[i], Addr, *MMO); } @@ -1959,11 +1963,14 @@ bool IRTranslator::translateAtomicCmpXchg(const User &U, Register Cmp = getOrCreateVReg(*I.getCompareOperand()); Register NewVal = getOrCreateVReg(*I.getNewValOperand()); + AAMDNodes AAMetadata; + I.getAAMetadata(AAMetadata); + MIRBuilder.buildAtomicCmpXchgWithSuccess( OldValRes, SuccessRes, Addr, Cmp, NewVal, *MF->getMachineMemOperand(MachinePointerInfo(I.getPointerOperand()), Flags, DL->getTypeStoreSize(ValType), - getMemOpAlignment(I), AAMDNodes(), nullptr, + getMemOpAlignment(I), AAMetadata, nullptr, I.getSyncScopeID(), I.getSuccessOrdering(), I.getFailureOrdering())); return true; @@ -2028,12 +2035,15 @@ bool IRTranslator::translateAtomicRMW(const User &U, break; } + AAMDNodes AAMetadata; + I.getAAMetadata(AAMetadata); + MIRBuilder.buildAtomicRMW( Opcode, Res, Addr, Val, *MF->getMachineMemOperand(MachinePointerInfo(I.getPointerOperand()), Flags, DL->getTypeStoreSize(ResType), - getMemOpAlignment(I), AAMDNodes(), nullptr, - I.getSyncScopeID(), I.getOrdering())); + getMemOpAlignment(I), AAMetadata, + nullptr, I.getSyncScopeID(), I.getOrdering())); return true; } |