[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