[llvm] 565f4e7 - [ValueTracking] Add more tests for alignment assume bundles

Alex Richardson via llvm-commits llvm-commits at lists.llvm.org
Tue Oct 27 05:17:44 PDT 2020


Author: Alex Richardson
Date: 2020-10-27T12:16:45Z
New Revision: 565f4e72dafa0abd250e0435e2bb62cdd91c908f

URL: https://github.com/llvm/llvm-project/commit/565f4e72dafa0abd250e0435e2bb62cdd91c908f
DIFF: https://github.com/llvm/llvm-project/commit/565f4e72dafa0abd250e0435e2bb62cdd91c908f.diff

LOG: [ValueTracking] Add more tests for alignment assume bundles

I noticed that alignment was no longer inferred as well after I last merged
our CHERI fork from upstream. I opened this review before seeing that D88669
already fixes the same problem, so this commit simply adds the new test that
I added as part of this change.

Reviewed By: jdoerfert

Differential Revision: https://reviews.llvm.org/D89830

Added: 
    

Modified: 
    llvm/unittests/Analysis/ValueTrackingTest.cpp

Removed: 
    


################################################################################
diff  --git a/llvm/unittests/Analysis/ValueTrackingTest.cpp b/llvm/unittests/Analysis/ValueTrackingTest.cpp
index 5b5c3a36677e..35ede6cb9319 100644
--- a/llvm/unittests/Analysis/ValueTrackingTest.cpp
+++ b/llvm/unittests/Analysis/ValueTrackingTest.cpp
@@ -19,6 +19,7 @@
 #include "llvm/Support/ErrorHandling.h"
 #include "llvm/Support/KnownBits.h"
 #include "llvm/Support/SourceMgr.h"
+#include "llvm/Transforms/Utils/Local.h"
 #include "gtest/gtest.h"
 
 using namespace llvm;
@@ -938,6 +939,34 @@ TEST(ValueTracking, canCreatePoisonOrUndef) {
   }
 }
 
+TEST_F(ValueTrackingTest, computePtrAlignment) {
+  parseAssembly("declare i1 @f_i1()\n"
+                "declare i8* @f_i8p()\n"
+                "declare void @llvm.assume(i1)\n"
+                "define void @test() {\n"
+                "  %A = call i8* @f_i8p()\n"
+                "  %cond = call i1 @f_i1()\n"
+                "  %CxtI = add i32 0, 0\n"
+                "  br i1 %cond, label %BB1, label %EXIT\n"
+                "BB1:\n"
+                "  %CxtI2 = add i32 0, 0\n"
+                "  %cond2 = call i1 @f_i1()\n"
+                "  call void @llvm.assume(i1 true) [ \"align\"(i8* %A, i64 16) ]\n"
+                "  br i1 %cond2, label %BB2, label %EXIT\n"
+                "BB2:\n"
+                "  %CxtI3 = add i32 0, 0\n"
+                "  ret void\n"
+                "EXIT:\n"
+                "  ret void\n"
+                "}");
+  AssumptionCache AC(*F);
+  DominatorTree DT(*F);
+  DataLayout DL = M->getDataLayout();
+  EXPECT_EQ(getKnownAlignment(A, DL, CxtI, &AC, &DT), Align(1));
+  EXPECT_EQ(getKnownAlignment(A, DL, CxtI2, &AC, &DT), Align(1));
+  EXPECT_EQ(getKnownAlignment(A, DL, CxtI3, &AC, &DT), Align(16));
+}
+
 TEST_F(ComputeKnownBitsTest, ComputeKnownBits) {
   parseAssembly(
       "define i32 @test(i32 %a, i32 %b) {\n"


        


More information about the llvm-commits mailing list