[llvm] 3319d05 - [NFC][GVN] Improve loadpre-missed-opportunity.ll test again thanks to @fhahn

Roman Lebedev via llvm-commits llvm-commits at lists.llvm.org
Fri Jul 24 10:33:15 PDT 2020


Author: Roman Lebedev
Date: 2020-07-24T20:32:51+03:00
New Revision: 3319d05630cdac66412a122efd75dfab073f5093

URL: https://github.com/llvm/llvm-project/commit/3319d05630cdac66412a122efd75dfab073f5093
DIFF: https://github.com/llvm/llvm-project/commit/3319d05630cdac66412a122efd75dfab073f5093.diff

LOG: [NFC][GVN] Improve loadpre-missed-opportunity.ll test again thanks to @fhahn

Added: 
    

Modified: 
    llvm/test/Transforms/GVN/loadpre-missed-opportunity.ll

Removed: 
    


################################################################################
diff  --git a/llvm/test/Transforms/GVN/loadpre-missed-opportunity.ll b/llvm/test/Transforms/GVN/loadpre-missed-opportunity.ll
index dae22d18334b..1c967f48d546 100644
--- a/llvm/test/Transforms/GVN/loadpre-missed-opportunity.ll
+++ b/llvm/test/Transforms/GVN/loadpre-missed-opportunity.ll
@@ -1,25 +1,33 @@
 ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
 ; RUN: opt < %s -gvn -S | FileCheck %s
 
-define void @loadpre_opportunity(i32** %arg, i1 %arg1, i1 %arg2, i1 %arg3) {
+define i32 @loadpre_opportunity(i32** %arg, i1 %arg1, i1 %arg2, i1 %arg3) {
 ; CHECK-LABEL: @loadpre_opportunity(
 ; CHECK-NEXT:  bb:
-; CHECK-NEXT:    br label [[BB9:%.*]]
-; CHECK:       bb6:
-; CHECK-NEXT:    br label [[BB9]]
-; CHECK:       bb9:
-; CHECK-NEXT:    br i1 [[ARG1:%.*]], label [[BB6:%.*]], label [[BB10:%.*]]
-; CHECK:       bb10:
-; CHECK-NEXT:    call void @somecall()
-; CHECK-NEXT:    br i1 [[ARG2:%.*]], label [[BB12:%.*]], label [[BB15:%.*]]
-; CHECK:       bb12:
-; CHECK-NEXT:    br label [[BB13:%.*]]
+; CHECK-NEXT:    [[I:%.*]] = load i32*, i32** [[ARG:%.*]], align 8
+; CHECK-NEXT:    [[I6:%.*]] = call i32 @use(i32* [[I]])
+; CHECK-NEXT:    br label [[BB11:%.*]]
+; CHECK:       bb7:
+; CHECK-NEXT:    [[I8:%.*]] = load i32*, i32** [[ARG]], align 8
+; CHECK-NEXT:    [[I10:%.*]] = call i32 @use(i32* [[I8]])
+; CHECK-NEXT:    br label [[BB11]]
+; CHECK:       bb11:
+; CHECK-NEXT:    [[I12:%.*]] = phi i32 [ [[I6]], [[BB:%.*]] ], [ [[I10]], [[BB7:%.*]] ]
+; CHECK-NEXT:    br i1 [[ARG1:%.*]], label [[BB7]], label [[BB13:%.*]]
 ; CHECK:       bb13:
-; CHECK-NEXT:    br i1 [[ARG3:%.*]], label [[BB14:%.*]], label [[BB13]]
+; CHECK-NEXT:    call void @somecall()
+; CHECK-NEXT:    br i1 [[ARG2:%.*]], label [[BB14:%.*]], label [[BB17:%.*]]
 ; CHECK:       bb14:
-; CHECK-NEXT:    br label [[BB15]]
+; CHECK-NEXT:    br label [[BB15:%.*]]
 ; CHECK:       bb15:
-; CHECK-NEXT:    br label [[BB6]]
+; CHECK-NEXT:    br i1 [[ARG3:%.*]], label [[BB16:%.*]], label [[BB15]]
+; CHECK:       bb16:
+; CHECK-NEXT:    br label [[BB17]]
+; CHECK:       bb17:
+; CHECK-NEXT:    [[I18:%.*]] = call i1 @cond()
+; CHECK-NEXT:    br i1 [[I18]], label [[BB7]], label [[BB19:%.*]]
+; CHECK:       bb19:
+; CHECK-NEXT:    ret i32 [[I12]]
 ;
 bb:
   %i = load i32*, i32** %arg, align 8
@@ -27,31 +35,40 @@ bb:
   br label %bb5
 
 bb5:
-  br label %bb9
-
-bb6:
-  %i7 = load i32*, i32** %arg, align 8
-  %i8 = getelementptr inbounds i32, i32* %i7, i64 0
-  br label %bb9
+  %i6 = call i32 @use(i32* %i4)
+  br label %bb11
 
-bb9:
-  br i1 %arg1, label %bb6, label %bb10
-
-bb10:
-  call void @somecall()
-  br i1 %arg2, label %bb12, label %bb15
+bb7:
+  %i8 = load i32*, i32** %arg, align 8
+  %i9 = getelementptr inbounds i32, i32* %i8, i64 0
+  %i10 = call i32 @use(i32* %i9)
+  br label %bb11
 
-bb12:
-  br label %bb13
+bb11:
+  %i12 = phi i32 [ %i6, %bb5 ], [ %i10, %bb7 ]
+  br i1 %arg1, label %bb7, label %bb13
 
 bb13:
-  br i1 %arg3, label %bb14, label %bb13
+  call void @somecall()
+  br i1 %arg2, label %bb14, label %bb17
 
 bb14:
   br label %bb15
 
 bb15:
-  br label %bb6
+  br i1 %arg3, label %bb16, label %bb15
+
+bb16:
+  br label %bb17
+
+bb17:
+  %i18 = call i1 @cond()
+  br i1 %i18, label %bb7, label %bb19
+
+bb19:
+  ret i32 %i12
 }
 
 declare void @somecall()
+declare i32 @use(i32*) readnone
+declare i1 @cond() readnone


        


More information about the llvm-commits mailing list