[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