[llvm] b9cf2df - [test] Add phase ordering test
Arthur Eubanks via llvm-commits
llvm-commits at lists.llvm.org
Mon Mar 14 09:42:47 PDT 2022
Author: Arthur Eubanks
Date: 2022-03-14T09:42:34-07:00
New Revision: b9cf2df3ff73e6f10b9fd50a4e38f3ccc1da502d
URL: https://github.com/llvm/llvm-project/commit/b9cf2df3ff73e6f10b9fd50a4e38f3ccc1da502d
DIFF: https://github.com/llvm/llvm-project/commit/b9cf2df3ff73e6f10b9fd50a4e38f3ccc1da502d.diff
LOG: [test] Add phase ordering test
Added:
llvm/test/Transforms/PhaseOrdering/recompute-globalsaa.ll
Modified:
Removed:
################################################################################
diff --git a/llvm/test/Transforms/PhaseOrdering/recompute-globalsaa.ll b/llvm/test/Transforms/PhaseOrdering/recompute-globalsaa.ll
new file mode 100644
index 0000000000000..7a1ff5f3710ee
--- /dev/null
+++ b/llvm/test/Transforms/PhaseOrdering/recompute-globalsaa.ll
@@ -0,0 +1,69 @@
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
+; RUN: opt -passes='default<O2>' -S < %s | FileCheck %s
+ at a = internal global i32 0, align 4
+ at c = internal global i32** @b, align 8
+ at b = internal global i32* null, align 8
+ at e = internal global i32* @d, align 8
+ at d = internal global i32 0, align 4
+
+define i32 @main() {
+; CHECK-LABEL: @main(
+; CHECK-NEXT: entry:
+; CHECK-NEXT: store i1 true, i1* @a, align 4
+; CHECK-NEXT: [[TMP0:%.*]] = load i32*, i32** @e, align 8
+; CHECK-NEXT: store i32 0, i32* [[TMP0]], align 4
+; CHECK-NEXT: [[DOTB:%.*]] = load i1, i1* @a, align 4
+; CHECK-NEXT: br i1 [[DOTB]], label [[BAR_EXIT:%.*]], label [[IF_THEN_I:%.*]]
+; CHECK: if.then.i:
+; CHECK-NEXT: tail call void @foo()
+; CHECK-NEXT: br label [[BAR_EXIT]]
+; CHECK: bar.exit:
+; CHECK-NEXT: store i32* null, i32** @e, align 8
+; CHECK-NEXT: ret i32 0
+;
+entry:
+ %h = alloca i32*, align 8
+ %i = alloca i32*, align 8
+ %j = alloca i32*, align 8
+ %0 = bitcast i32** %h to i8*
+ store i32* @a, i32** %h, align 8
+ %1 = bitcast i32** %i to i8*
+ %2 = bitcast i32** %j to i8*
+ store i32* @a, i32** %j, align 8
+ %3 = load i32*, i32** %j, align 8
+ store i32 1, i32* %3, align 4
+ store i32* @a, i32** %i, align 8
+ %4 = load i32*, i32** %i, align 8
+ %5 = load i32**, i32*** @c, align 8
+ store i32* %4, i32** %5, align 8
+ %6 = load i32*, i32** %h, align 8
+ %call = call i32* @bar(i32* %6)
+ %7 = bitcast i32** %j to i8*
+ %8 = bitcast i32** %i to i8*
+ %9 = bitcast i32** %h to i8*
+ ret i32 0
+}
+
+define internal i32* @bar(i32* %g) {
+entry:
+ %g.addr = alloca i32*, align 8
+ store i32* %g, i32** %g.addr, align 8
+ %0 = load i32*, i32** @e, align 8
+ store i32 0, i32* %0, align 4
+ %1 = load i32*, i32** %g.addr, align 8
+ %2 = load i32, i32* %1, align 4
+ %tobool = icmp ne i32 %2, 0
+ br i1 %tobool, label %if.end, label %if.then
+
+if.then: ; preds = %entry
+ call void @foo()
+ br label %if.end
+
+if.end: ; preds = %if.then, %entry
+ store i32* null, i32** @e, align 8
+ %3 = load i32*, i32** @b, align 8
+ ret i32* %3
+}
+
+declare void @foo()
+
More information about the llvm-commits
mailing list