[PATCH] D38460: [CodeGen] Fix propagation of TBAA info for atomic accesses

Ivan A. Kosarev via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Mon Oct 2 07:48:21 PDT 2017


kosarev created this revision.
kosarev added a project: clang.

This patch fixes clang to propagate complete TBAA information for atomic accesses and not just the final access types. Prepared against https://reviews.llvm.org/D38456 and requires it to be committed first.

This is part of https://reviews.llvm.org/D37826 reworked to be a separate patch to simplify review.


Repository:
  rL LLVM

https://reviews.llvm.org/D38460

Files:
  lib/CodeGen/CGAtomic.cpp


Index: lib/CodeGen/CGAtomic.cpp
===================================================================
--- lib/CodeGen/CGAtomic.cpp
+++ lib/CodeGen/CGAtomic.cpp
@@ -98,7 +98,7 @@
         LVal = LValue::MakeBitfield(Address(Addr, lvalue.getAlignment()),
                                     BFI, lvalue.getType(),
                                     lvalue.getBaseInfo());
-        LVal.setTBAAAccessType(lvalue.getTBAAAccessType());
+        LVal.setTBAAInfo(lvalue.getTBAAInfo());
         AtomicTy = C.getIntTypeForBitwidth(AtomicSizeInBits, OrigBFI.IsSigned);
         if (AtomicTy.isNull()) {
           llvm::APInt Size(
@@ -1692,8 +1692,8 @@
           DesiredAddr, AtomicLVal.getExtVectorElts(), AtomicLVal.getType(),
           AtomicLVal.getBaseInfo());
     }
-    UpdateLVal.setTBAAAccessType(AtomicLVal.getTBAAAccessType());
-    DesiredLVal.setTBAAAccessType(AtomicLVal.getTBAAAccessType());
+    UpdateLVal.setTBAAInfo(AtomicLVal.getTBAAInfo());
+    DesiredLVal.setTBAAInfo(AtomicLVal.getTBAAInfo());
     UpRVal = CGF.EmitLoadOfLValue(UpdateLVal, SourceLocation());
   }
   // Store new value in the corresponding memory area
@@ -1789,7 +1789,7 @@
         DesiredAddr, AtomicLVal.getExtVectorElts(), AtomicLVal.getType(),
         AtomicLVal.getBaseInfo());
   }
-  DesiredLVal.setTBAAAccessType(AtomicLVal.getTBAAAccessType());
+  DesiredLVal.setTBAAInfo(AtomicLVal.getTBAAInfo());
   // Store new value in the corresponding memory area
   assert(UpdateRVal.isScalar());
   CGF.EmitStoreThroughLValue(UpdateRVal, DesiredLVal);


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D38460.117349.patch
Type: text/x-patch
Size: 1544 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20171002/b8716583/attachment.bin>


More information about the cfe-commits mailing list