[llvm] 1ac72a0 - [IPConstProp] Regenerate check lines.

Florian Hahn via llvm-commits llvm-commits at lists.llvm.org
Thu Jul 30 01:53:08 PDT 2020


Author: Florian Hahn
Date: 2020-07-30T09:52:16+01:00
New Revision: 1ac72a0774b5e6d770bb65d2debccca561bc1c31

URL: https://github.com/llvm/llvm-project/commit/1ac72a0774b5e6d770bb65d2debccca561bc1c31
DIFF: https://github.com/llvm/llvm-project/commit/1ac72a0774b5e6d770bb65d2debccca561bc1c31.diff

LOG: [IPConstProp] Regenerate check lines.

Preparation for D84447.

Added: 
    

Modified: 
    llvm/test/Transforms/IPConstantProp/2008-06-09-WeakProp.ll
    llvm/test/Transforms/IPConstantProp/arg-count-mismatch.ll
    llvm/test/Transforms/IPConstantProp/comdat-ipo.ll
    llvm/test/Transforms/IPConstantProp/deadarg.ll
    llvm/test/Transforms/IPConstantProp/multiple_callbacks.ll
    llvm/test/Transforms/IPConstantProp/naked-return.ll
    llvm/test/Transforms/IPConstantProp/openmp_parallel_for.ll
    llvm/test/Transforms/IPConstantProp/pthreads.ll
    llvm/test/Transforms/IPConstantProp/recursion.ll
    llvm/test/Transforms/IPConstantProp/return-argument.ll
    llvm/test/Transforms/IPConstantProp/return-constant.ll
    llvm/test/Transforms/IPConstantProp/return-constants.ll
    llvm/test/Transforms/IPConstantProp/thread_local_acs.ll

Removed: 
    


################################################################################
diff  --git a/llvm/test/Transforms/IPConstantProp/2008-06-09-WeakProp.ll b/llvm/test/Transforms/IPConstantProp/2008-06-09-WeakProp.ll
index 6471ed925797..270115cf5ddd 100644
--- a/llvm/test/Transforms/IPConstantProp/2008-06-09-WeakProp.ll
+++ b/llvm/test/Transforms/IPConstantProp/2008-06-09-WeakProp.ll
@@ -1,17 +1,25 @@
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
 ; RUN: opt < %s -ipconstprop -S | FileCheck %s
 ; Should not propagate the result of a weak function.
 ; PR2411
 
-; CHECK: ret i32 %r
-
 define weak i32 @foo() nounwind  {
+; CHECK-LABEL: @foo(
+; CHECK-NEXT:  entry:
+; CHECK-NEXT:    ret i32 1
+;
 entry:
-        ret i32 1
+  ret i32 1
 }
 
 define i32 @main() nounwind  {
+; CHECK-LABEL: @main(
+; CHECK-NEXT:  entry:
+; CHECK-NEXT:    [[R:%.*]] = call i32 @foo() #0
+; CHECK-NEXT:    ret i32 [[R]]
+;
 entry:
-        %r = call i32 @foo( ) nounwind
-        ret i32 %r
+  %r = call i32 @foo( ) nounwind
+  ret i32 %r
 }
 

diff  --git a/llvm/test/Transforms/IPConstantProp/arg-count-mismatch.ll b/llvm/test/Transforms/IPConstantProp/arg-count-mismatch.ll
index 2a7d92d3f9b6..7afe858e52d1 100644
--- a/llvm/test/Transforms/IPConstantProp/arg-count-mismatch.ll
+++ b/llvm/test/Transforms/IPConstantProp/arg-count-mismatch.ll
@@ -1,3 +1,4 @@
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
 ; RUN: opt < %s -ipconstprop -S -o - | FileCheck %s
 
 ; The original C source looked like this:
@@ -50,22 +51,28 @@ define internal i16 @bar(i16 %p1, i16 %p2) {
 ; in argument count due to varargs (as long as all non-variadic arguments have
 ; been provided),
 
+define internal i16 @vararg_prop(i16 %p1, ...) {
+; CHECK-LABEL: @vararg_prop(
+; CHECK-NEXT:    ret i16 7
+;
+  ret i16 %p1
+}
+
 define dso_local i16 @vararg_tests(i16 %a) {
+; CHECK-LABEL: @vararg_tests(
+; CHECK-NEXT:    [[CALL1:%.*]] = call i16 (i16, ...) @vararg_prop(i16 7, i16 8, i16 [[A:%.*]])
+; CHECK-NEXT:    [[CALL2:%.*]] = call i16 bitcast (i16 (i16, i16, ...)* @vararg_no_prop to i16 (i16)*)(i16 7)
+; CHECK-NEXT:    [[ADD:%.*]] = add i16 7, [[CALL2]]
+; CHECK-NEXT:    ret i16 [[ADD]]
+;
   %call1 = call i16 (i16, ...) @vararg_prop(i16 7, i16 8, i16 %a)
   %call2 = call i16 bitcast (i16 (i16, i16, ...) * @vararg_no_prop to i16 (i16) *) (i16 7)
   %add = add i16 %call1, %call2
   ret i16 %add
 }
 
-define internal i16 @vararg_prop(i16 %p1, ...) {
-; CHECK-LABEL: define internal i16 @vararg_prop(
-; CHECK-NEXT:    ret i16 7
-;
-  ret i16 %p1
-}
-
 define internal i16 @vararg_no_prop(i16 %p1, i16 %p2, ...) {
-; CHECK-LABEL: define internal i16 @vararg_no_prop(
+; CHECK-LABEL: @vararg_no_prop(
 ; CHECK-NEXT:    ret i16 [[P1:%.*]]
 ;
   ret i16 %p1

diff  --git a/llvm/test/Transforms/IPConstantProp/comdat-ipo.ll b/llvm/test/Transforms/IPConstantProp/comdat-ipo.ll
index 6c4c44c33e25..a19c89cb9bcf 100644
--- a/llvm/test/Transforms/IPConstantProp/comdat-ipo.ll
+++ b/llvm/test/Transforms/IPConstantProp/comdat-ipo.ll
@@ -1,8 +1,12 @@
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
 ; RUN: opt < %s -ipconstprop -S | FileCheck %s
 
 ; See PR26774
 
 define i32 @baz() {
+; CHECK-LABEL: @baz(
+; CHECK-NEXT:    ret i32 10
+;
   ret i32 10
 }
 
@@ -11,8 +15,9 @@ define i32 @baz() {
 
 define linkonce_odr i32 @foo() {
 ; CHECK-LABEL: @foo(
-; CHECK-NEXT:  %val = call i32 @baz()
-; CHECK-NEXT:  ret i32 10
+; CHECK-NEXT:    [[VAL:%.*]] = call i32 @baz()
+; CHECK-NEXT:    ret i32 10
+;
 
   %val = call i32 @baz()
   ret i32 %val
@@ -20,8 +25,9 @@ define linkonce_odr i32 @foo() {
 
 define i32 @bar() {
 ; CHECK-LABEL: @bar(
-; CHECK-NEXT:  %val = call i32 @foo()
-; CHECK-NEXT:  ret i32 %val
+; CHECK-NEXT:    [[VAL:%.*]] = call i32 @foo()
+; CHECK-NEXT:    ret i32 [[VAL]]
+;
 
   %val = call i32 @foo()
   ret i32 %val

diff  --git a/llvm/test/Transforms/IPConstantProp/deadarg.ll b/llvm/test/Transforms/IPConstantProp/deadarg.ll
index 4b9938e09e90..25b9749b5079 100644
--- a/llvm/test/Transforms/IPConstantProp/deadarg.ll
+++ b/llvm/test/Transforms/IPConstantProp/deadarg.ll
@@ -1,6 +1,7 @@
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
 ; RUN: opt < %s -ipconstprop -disable-output
 define internal void @foo(i32 %X) {
-        call void @foo( i32 %X )
-        ret void
+  call void @foo( i32 %X )
+  ret void
 }
 

diff  --git a/llvm/test/Transforms/IPConstantProp/multiple_callbacks.ll b/llvm/test/Transforms/IPConstantProp/multiple_callbacks.ll
index 6bc3f4477db0..6684044e24ce 100644
--- a/llvm/test/Transforms/IPConstantProp/multiple_callbacks.ll
+++ b/llvm/test/Transforms/IPConstantProp/multiple_callbacks.ll
@@ -1,9 +1,5 @@
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
 ; RUN: opt -ipconstprop -S < %s | FileCheck %s
-; FIXME: There seems to be another instance of nondeterminism which causes the number of iterations to be either 1 or 3, depending on the system. 
-;        This needs to be investigated and resolved. In the meantime we do not verify the number of iterations.
-; opt -S -passes=attributor -aa-pipeline='basic-aa'  -attributor-max-iterations-verify -attributor-max-iterations=1 < %s | FileCheck %s
-; RUN: opt -S -passes=attributor -aa-pipeline='basic-aa'  -attributor-max-iterations-verify=false -attributor-max-iterations=3 < %s | FileCheck %s
-;
 ;
 ;                            /---------------------------------------|
 ;                            |                /----------------------|----|
@@ -40,39 +36,63 @@
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
 define internal i32 @cb0(i32 %zero) {
+; CHECK-LABEL: @cb0(
+; CHECK-NEXT:  entry:
+; CHECK-NEXT:    ret i32 0
+;
 entry:
-; CHECK:      @cb0
-; CHECK-NEXT: entry
-; CHECK-NEXT: ret i32 0
   ret i32 %zero
 }
 
 define internal i32 @cb1(i32 %unknown) {
+; CHECK-LABEL: @cb1(
+; CHECK-NEXT:  entry:
+; CHECK-NEXT:    ret i32 [[UNKNOWN:%.*]]
+;
 entry:
-; CHECK: ret i32 %unknown
   ret i32 %unknown
 }
 
 define internal i32 @cb2(i32 %unknown) {
+; CHECK-LABEL: @cb2(
+; CHECK-NEXT:  entry:
+; CHECK-NEXT:    [[CALL:%.*]] = call i32 @cb0(i32 0)
+; CHECK-NEXT:    ret i32 [[UNKNOWN:%.*]]
+;
 entry:
   %call = call i32 @cb0(i32 0)
-; CHECK: ret i32 %unknown
   ret i32 %unknown
 }
 
 define internal i32 @cb3(i32 %unknown) {
+; CHECK-LABEL: @cb3(
+; CHECK-NEXT:  entry:
+; CHECK-NEXT:    ret i32 [[UNKNOWN:%.*]]
+;
 entry:
-; CHECK: ret i32 %unknown
   ret i32 %unknown
 }
 
 define internal i32 @cb4(i32 %unknown) {
+; CHECK-LABEL: @cb4(
+; CHECK-NEXT:  entry:
+; CHECK-NEXT:    ret i32 [[UNKNOWN:%.*]]
+;
 entry:
-; CHECK: ret i32 %unknown
   ret i32 %unknown
 }
 
 define void @foo() {
+; CHECK-LABEL: @foo(
+; CHECK-NEXT:  entry:
+; CHECK-NEXT:    [[CALL:%.*]] = call i32 @cb0(i32 0)
+; CHECK-NEXT:    [[CALL1:%.*]] = call i32 @cb3(i32 1)
+; CHECK-NEXT:    call void @broker(i32 (i32)* nonnull @cb0, i32 (i32)* nonnull @cb1, i32 (i32)* nonnull @cb0, i32 0, i32 1)
+; CHECK-NEXT:    call void @broker(i32 (i32)* nonnull @cb1, i32 (i32)* nonnull @cb2, i32 (i32)* nonnull @cb2, i32 0, i32 1)
+; CHECK-NEXT:    call void @broker(i32 (i32)* nonnull @cb3, i32 (i32)* nonnull @cb2, i32 (i32)* nonnull @cb3, i32 0, i32 1)
+; CHECK-NEXT:    call void @broker(i32 (i32)* nonnull @cb4, i32 (i32)* nonnull @cb4, i32 (i32)* nonnull @cb4, i32 0, i32 1)
+; CHECK-NEXT:    ret void
+;
 entry:
   %call = call i32 @cb0(i32 0)
   %call1 = call i32 @cb3(i32 1)

diff  --git a/llvm/test/Transforms/IPConstantProp/naked-return.ll b/llvm/test/Transforms/IPConstantProp/naked-return.ll
index ac3dc062abf7..133662a211b4 100644
--- a/llvm/test/Transforms/IPConstantProp/naked-return.ll
+++ b/llvm/test/Transforms/IPConstantProp/naked-return.ll
@@ -1,3 +1,4 @@
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
 ; RUN: opt -ipsccp -S %s | FileCheck %s
 ; RUN: opt -ipconstprop -S %s | FileCheck %s
 
@@ -5,22 +6,37 @@ target datalayout = "e-m:x-p:32:32-i64:64-f80:32-n8:16:32-a:0:32-S32"
 target triple = "i686-pc-windows-msvc19.0.24215"
 
 define i32 @dipsy(i32, i32) local_unnamed_addr #0 {
+; CHECK-LABEL: @dipsy(
+; CHECK-NEXT:  BasicBlock0:
+; CHECK-NEXT:    call void asm "\0D\0Apushl %ebp\0D\0Amovl 8(%esp),%eax\0D\0Amovl 12(%esp), %ebp\0D\0Acalll *%eax\0D\0Apopl %ebp\0D\0Aretl\0D\0A", ""()
+; CHECK-NEXT:    ret i32 0
+;
 BasicBlock0:
   call void asm "\0D\0Apushl %ebp\0D\0Amovl 8(%esp),%eax\0D\0Amovl 12(%esp), %ebp\0D\0Acalll *%eax\0D\0Apopl %ebp\0D\0Aretl\0D\0A", ""()
   ret i32 0
 }
 
 define void @tinkywinky(i32, i32, i32) local_unnamed_addr #0 {
+; CHECK-LABEL: @tinkywinky(
+; CHECK-NEXT:  BasicBlock1:
+; CHECK-NEXT:    call void asm "\0D\0A movl 12(%esp), %ebp\0D\0A movl 4(%esp), %eax\0D\0A movl 8(%esp), %esp\0D\0A jmpl *%eax\0D\0A", ""()
+; CHECK-NEXT:    ret void
+;
 BasicBlock1:
   call void asm "\0D\0A    movl 12(%esp), %ebp\0D\0A    movl 4(%esp), %eax\0D\0A    movl 8(%esp), %esp\0D\0A    jmpl *%eax\0D\0A", ""()
   ret void
 }
 
 define void @patatino(i32, i32, i32) local_unnamed_addr #1 {
+; CHECK-LABEL: @patatino(
+; CHECK-NEXT:  bb:
+; CHECK-NEXT:    [[TMP3:%.*]] = tail call i32 @dipsy(i32 [[TMP0:%.*]], i32 [[TMP1:%.*]]) #0
+; CHECK-NEXT:    tail call void @tinkywinky(i32 [[TMP3]], i32 [[TMP2:%.*]], i32 [[TMP1]]) #0
+; CHECK-NEXT:    ret void
+;
 bb:
   %3 = tail call i32 @dipsy(i32 %0, i32 %1) #0
 ; Check that we don't accidentally propagate zero.
-; CHECK: @tinkywinky(i32 %3, i32 %2, i32 %1) #0
   tail call void @tinkywinky(i32 %3, i32 %2, i32 %1) #0
   ret void
 }

diff  --git a/llvm/test/Transforms/IPConstantProp/openmp_parallel_for.ll b/llvm/test/Transforms/IPConstantProp/openmp_parallel_for.ll
index 3c7ffe27f5d2..338cc8886e29 100644
--- a/llvm/test/Transforms/IPConstantProp/openmp_parallel_for.ll
+++ b/llvm/test/Transforms/IPConstantProp/openmp_parallel_for.ll
@@ -1,3 +1,4 @@
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
 ; RUN: opt -S -ipconstprop < %s | FileCheck %s
 ;
 ;    void bar(int, float, double);
@@ -24,6 +25,16 @@ target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 @1 = private unnamed_addr global %struct.ident_t { i32 0, i32 2, i32 0, i32 0, i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str, i32 0, i32 0) }, align 8
 
 define dso_local void @foo(i32 %N) {
+; CHECK-LABEL: @foo(
+; CHECK-NEXT:  entry:
+; CHECK-NEXT:    [[N_ADDR:%.*]] = alloca i32, align 4
+; CHECK-NEXT:    [[P:%.*]] = alloca float, align 4
+; CHECK-NEXT:    store i32 [[N:%.*]], i32* [[N_ADDR]], align 4
+; CHECK-NEXT:    store float 3.000000e+00, float* [[P]], align 4
+; CHECK-NEXT:    store i32 7, i32* [[N_ADDR]], align 4
+; CHECK-NEXT:    call void (%struct.ident_t*, i32, void (i32*, i32*, ...)*, ...) @__kmpc_fork_call(%struct.ident_t* nonnull @1, i32 3, void (i32*, i32*, ...)* bitcast (void (i32*, i32*, i32*, float*, i64)* @.omp_outlined. to void (i32*, i32*, ...)*), i32* nonnull [[N_ADDR]], float* nonnull [[P]], i64 4617315517961601024)
+; CHECK-NEXT:    ret void
+;
 entry:
   %N.addr = alloca i32, align 4
   %p = alloca float, align 4
@@ -35,13 +46,72 @@ entry:
 }
 
 define internal void @.omp_outlined.(i32* noalias %.global_tid., i32* noalias %.bound_tid., i32* dereferenceable(4) %N, float* dereferenceable(4) %p, i64 %q) {
+; CHECK-LABEL: @.omp_outlined.(
+; CHECK-NEXT:  entry:
+; CHECK-NEXT:    [[Q_ADDR:%.*]] = alloca i64, align 8
+; CHECK-NEXT:    [[DOTOMP_LB:%.*]] = alloca i32, align 4
+; CHECK-NEXT:    [[DOTOMP_UB:%.*]] = alloca i32, align 4
+; CHECK-NEXT:    [[DOTOMP_STRIDE:%.*]] = alloca i32, align 4
+; CHECK-NEXT:    [[DOTOMP_IS_LAST:%.*]] = alloca i32, align 4
+; CHECK-NEXT:    store i64 4617315517961601024, i64* [[Q_ADDR]], align 8
+; CHECK-NEXT:    [[CONV:%.*]] = bitcast i64* [[Q_ADDR]] to double*
+; CHECK-NEXT:    [[TMP:%.*]] = load i32, i32* [[N:%.*]], align 4
+; CHECK-NEXT:    [[SUB3:%.*]] = add nsw i32 [[TMP]], -3
+; CHECK-NEXT:    [[CMP:%.*]] = icmp sgt i32 [[TMP]], 2
+; CHECK-NEXT:    br i1 [[CMP]], label [[OMP_PRECOND_THEN:%.*]], label [[OMP_PRECOND_END:%.*]]
+; CHECK:       omp.precond.then:
+; CHECK-NEXT:    store i32 0, i32* [[DOTOMP_LB]], align 4
+; CHECK-NEXT:    store i32 [[SUB3]], i32* [[DOTOMP_UB]], align 4
+; CHECK-NEXT:    store i32 1, i32* [[DOTOMP_STRIDE]], align 4
+; CHECK-NEXT:    store i32 0, i32* [[DOTOMP_IS_LAST]], align 4
+; CHECK-NEXT:    [[TMP5:%.*]] = load i32, i32* [[DOTGLOBAL_TID_:%.*]], align 4
+; CHECK-NEXT:    call void @__kmpc_for_static_init_4(%struct.ident_t* nonnull @0, i32 [[TMP5]], i32 34, i32* nonnull [[DOTOMP_IS_LAST]], i32* nonnull [[DOTOMP_LB]], i32* nonnull [[DOTOMP_UB]], i32* nonnull [[DOTOMP_STRIDE]], i32 1, i32 1)
+; CHECK-NEXT:    [[TMP6:%.*]] = load i32, i32* [[DOTOMP_UB]], align 4
+; CHECK-NEXT:    [[CMP6:%.*]] = icmp sgt i32 [[TMP6]], [[SUB3]]
+; CHECK-NEXT:    br i1 [[CMP6]], label [[COND_TRUE:%.*]], label [[COND_FALSE:%.*]]
+; CHECK:       cond.true:
+; CHECK-NEXT:    br label [[COND_END:%.*]]
+; CHECK:       cond.false:
+; CHECK-NEXT:    [[TMP7:%.*]] = load i32, i32* [[DOTOMP_UB]], align 4
+; CHECK-NEXT:    br label [[COND_END]]
+; CHECK:       cond.end:
+; CHECK-NEXT:    [[COND:%.*]] = phi i32 [ [[SUB3]], [[COND_TRUE]] ], [ [[TMP7]], [[COND_FALSE]] ]
+; CHECK-NEXT:    store i32 [[COND]], i32* [[DOTOMP_UB]], align 4
+; CHECK-NEXT:    [[TMP8:%.*]] = load i32, i32* [[DOTOMP_LB]], align 4
+; CHECK-NEXT:    br label [[OMP_INNER_FOR_COND:%.*]]
+; CHECK:       omp.inner.for.cond:
+; CHECK-NEXT:    [[DOTOMP_IV_0:%.*]] = phi i32 [ [[TMP8]], [[COND_END]] ], [ [[ADD11:%.*]], [[OMP_INNER_FOR_INC:%.*]] ]
+; CHECK-NEXT:    [[TMP9:%.*]] = load i32, i32* [[DOTOMP_UB]], align 4
+; CHECK-NEXT:    [[CMP8:%.*]] = icmp sgt i32 [[DOTOMP_IV_0]], [[TMP9]]
+; CHECK-NEXT:    br i1 [[CMP8]], label [[OMP_INNER_FOR_COND_CLEANUP:%.*]], label [[OMP_INNER_FOR_BODY:%.*]]
+; CHECK:       omp.inner.for.cond.cleanup:
+; CHECK-NEXT:    br label [[OMP_INNER_FOR_END:%.*]]
+; CHECK:       omp.inner.for.body:
+; CHECK-NEXT:    [[ADD10:%.*]] = add nsw i32 [[DOTOMP_IV_0]], 2
+; CHECK-NEXT:    [[TMP10:%.*]] = load float, float* [[P:%.*]], align 4
+; CHECK-NEXT:    [[TMP11:%.*]] = load double, double* [[CONV]], align 8
+; CHECK-NEXT:    call void @bar(i32 [[ADD10]], float [[TMP10]], double [[TMP11]])
+; CHECK-NEXT:    br label [[OMP_BODY_CONTINUE:%.*]]
+; CHECK:       omp.body.continue:
+; CHECK-NEXT:    br label [[OMP_INNER_FOR_INC]]
+; CHECK:       omp.inner.for.inc:
+; CHECK-NEXT:    [[ADD11]] = add nsw i32 [[DOTOMP_IV_0]], 1
+; CHECK-NEXT:    br label [[OMP_INNER_FOR_COND]]
+; CHECK:       omp.inner.for.end:
+; CHECK-NEXT:    br label [[OMP_LOOP_EXIT:%.*]]
+; CHECK:       omp.loop.exit:
+; CHECK-NEXT:    [[TMP12:%.*]] = load i32, i32* [[DOTGLOBAL_TID_]], align 4
+; CHECK-NEXT:    call void @__kmpc_for_static_fini(%struct.ident_t* nonnull @0, i32 [[TMP12]])
+; CHECK-NEXT:    br label [[OMP_PRECOND_END]]
+; CHECK:       omp.precond.end:
+; CHECK-NEXT:    ret void
+;
 entry:
   %q.addr = alloca i64, align 8
   %.omp.lb = alloca i32, align 4
   %.omp.ub = alloca i32, align 4
   %.omp.stride = alloca i32, align 4
   %.omp.is_last = alloca i32, align 4
-; CHECK: store i64 4617315517961601024, i64* %q.addr, align 8
   store i64 %q, i64* %q.addr, align 8
   %conv = bitcast i64* %q.addr to double*
   %tmp = load i32, i32* %N, align 4

diff  --git a/llvm/test/Transforms/IPConstantProp/pthreads.ll b/llvm/test/Transforms/IPConstantProp/pthreads.ll
index 0af2c166a088..dcad3858da13 100644
--- a/llvm/test/Transforms/IPConstantProp/pthreads.ll
+++ b/llvm/test/Transforms/IPConstantProp/pthreads.ll
@@ -1,3 +1,4 @@
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
 ; RUN: opt -ipconstprop -S < %s | FileCheck %s
 ;
 ;    #include <pthread.h>
@@ -24,6 +25,13 @@ target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 @GlobalVPtr = common dso_local global i8* null, align 8
 
 define dso_local i32 @main() {
+; CHECK-LABEL: @main(
+; CHECK-NEXT:  entry:
+; CHECK-NEXT:    [[THREAD:%.*]] = alloca i64, align 8
+; CHECK-NEXT:    [[CALL:%.*]] = call i32 @pthread_create(i64* nonnull [[THREAD]], %union.pthread_attr_t* null, i8* (i8*)* nonnull @foo, i8* null)
+; CHECK-NEXT:    [[CALL1:%.*]] = call i32 @pthread_create(i64* nonnull [[THREAD]], %union.pthread_attr_t* null, i8* (i8*)* nonnull @bar, i8* bitcast (i8** @GlobalVPtr to i8*))
+; CHECK-NEXT:    ret i32 0
+;
 entry:
   %thread = alloca i64, align 8
   %call = call i32 @pthread_create(i64* nonnull %thread, %union.pthread_attr_t* null, i8* (i8*)* nonnull @foo, i8* null)
@@ -34,14 +42,20 @@ entry:
 declare !callback !0 dso_local i32 @pthread_create(i64*, %union.pthread_attr_t*, i8* (i8*)*, i8*)
 
 define internal i8* @foo(i8* %arg) {
+; CHECK-LABEL: @foo(
+; CHECK-NEXT:  entry:
+; CHECK-NEXT:    ret i8* null
+;
 entry:
-; CHECK: ret i8* null
   ret i8* %arg
 }
 
 define internal i8* @bar(i8* %arg) {
+; CHECK-LABEL: @bar(
+; CHECK-NEXT:  entry:
+; CHECK-NEXT:    ret i8* bitcast (i8** @GlobalVPtr to i8*)
+;
 entry:
-; CHECK: ret i8* bitcast (i8** @GlobalVPtr to i8*)
   ret i8* %arg
 }
 

diff  --git a/llvm/test/Transforms/IPConstantProp/recursion.ll b/llvm/test/Transforms/IPConstantProp/recursion.ll
index 13aea8fc7b4a..ac8ff9ca00e3 100644
--- a/llvm/test/Transforms/IPConstantProp/recursion.ll
+++ b/llvm/test/Transforms/IPConstantProp/recursion.ll
@@ -1,15 +1,25 @@
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
 ; RUN: opt < %s -ipconstprop -deadargelim -S | FileCheck %s
 
 ; CHECK-NOT: %X
 
 define internal i32 @foo(i32 %X) {
-        %Y = call i32 @foo( i32 %X )            ; <i32> [#uses=1]
-        %Z = add i32 %Y, 1              ; <i32> [#uses=1]
-        ret i32 %Z
+; CHECK-LABEL: @foo(
+; CHECK-NEXT:    [[Y:%.*]] = call i32 @foo()
+; CHECK-NEXT:    [[Z:%.*]] = add i32 [[Y]], 1
+; CHECK-NEXT:    ret i32 [[Z]]
+;
+  %Y = call i32 @foo( i32 %X )            ; <i32> [#uses=1]
+  %Z = add i32 %Y, 1              ; <i32> [#uses=1]
+  ret i32 %Z
 }
 
 define void @bar() {
-        call i32 @foo( i32 17 )         ; <i32>:1 [#uses=0]
-        ret void
+; CHECK-LABEL: @bar(
+; CHECK-NEXT:    [[TMP1:%.*]] = call i32 @foo()
+; CHECK-NEXT:    ret void
+;
+  call i32 @foo( i32 17 )         ; <i32>:1 [#uses=0]
+  ret void
 }
 

diff  --git a/llvm/test/Transforms/IPConstantProp/return-argument.ll b/llvm/test/Transforms/IPConstantProp/return-argument.ll
index 830a6547b632..6a3eac0c120d 100644
--- a/llvm/test/Transforms/IPConstantProp/return-argument.ll
+++ b/llvm/test/Transforms/IPConstantProp/return-argument.ll
@@ -1,58 +1,91 @@
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
 ; RUN: opt < %s -ipconstprop -S | FileCheck %s
 
-; CHECK: add i32 1, 3
-; CHECK: store i32 %Z, i32* %Q
-
 ;; This function returns its second argument on all return statements
 define internal i32* @incdec(i1 %C, i32* %V) {
-        %X = load i32, i32* %V
-        br i1 %C, label %T, label %F
+; CHECK-LABEL: @incdec(
+; CHECK-NEXT:    [[X:%.*]] = load i32, i32* [[V:%.*]], align 4
+; CHECK-NEXT:    br i1 [[C:%.*]], label [[T:%.*]], label [[F:%.*]]
+; CHECK:       T:
+; CHECK-NEXT:    [[X1:%.*]] = add i32 [[X]], 1
+; CHECK-NEXT:    store i32 [[X1]], i32* [[V]], align 4
+; CHECK-NEXT:    ret i32* [[V]]
+; CHECK:       F:
+; CHECK-NEXT:    [[X2:%.*]] = sub i32 [[X]], 1
+; CHECK-NEXT:    store i32 [[X2]], i32* [[V]], align 4
+; CHECK-NEXT:    ret i32* [[V]]
+;
+  %X = load i32, i32* %V
+  br i1 %C, label %T, label %F
 
 T:              ; preds = %0
-        %X1 = add i32 %X, 1
-        store i32 %X1, i32* %V
-        ret i32* %V
+  %X1 = add i32 %X, 1
+  store i32 %X1, i32* %V
+  ret i32* %V
 
 F:              ; preds = %0
-        %X2 = sub i32 %X, 1
-        store i32 %X2, i32* %V
-        ret i32* %V
+  %X2 = sub i32 %X, 1
+  store i32 %X2, i32* %V
+  ret i32* %V
 }
 
 ;; This function returns its first argument as a part of a multiple return
 ;; value
 define internal { i32, i32 } @foo(i32 %A, i32 %B) {
-        %X = add i32 %A, %B
-        %Y = insertvalue { i32, i32 } undef, i32 %A, 0
-        %Z = insertvalue { i32, i32 } %Y, i32 %X, 1
-        ret { i32, i32 } %Z
+; CHECK-LABEL: @foo(
+; CHECK-NEXT:    [[X:%.*]] = add i32 [[A:%.*]], [[B:%.*]]
+; CHECK-NEXT:    [[Y:%.*]] = insertvalue { i32, i32 } undef, i32 [[A]], 0
+; CHECK-NEXT:    [[Z:%.*]] = insertvalue { i32, i32 } [[Y]], i32 [[X]], 1
+; CHECK-NEXT:    ret { i32, i32 } [[Z]]
+;
+  %X = add i32 %A, %B
+  %Y = insertvalue { i32, i32 } undef, i32 %A, 0
+  %Z = insertvalue { i32, i32 } %Y, i32 %X, 1
+  ret { i32, i32 } %Z
 }
 
 define void @caller(i1 %C) personality i32 (...)* @__gxx_personality_v0 {
-        %Q = alloca i32
-        ;; Call incdec to see if %W is properly replaced by %Q
-        %W = call i32* @incdec(i1 %C, i32* %Q )             ; <i32> [#uses=1]
-        ;; Call @foo twice, to prevent the arguments from propagating into the
-        ;; function (so we can check the returned argument is properly
-        ;; propagated per-caller).
-        %S1 = call { i32, i32 } @foo(i32 1, i32 2)
-        %X1 = extractvalue { i32, i32 } %S1, 0
-        %S2 = invoke { i32, i32 } @foo(i32 3, i32 4) to label %OK unwind label %LPAD
+; CHECK-LABEL: @caller(
+; CHECK-NEXT:    [[Q:%.*]] = alloca i32, align 4
+; CHECK-NEXT:    [[W:%.*]] = call i32* @incdec(i1 [[C:%.*]], i32* [[Q]])
+; CHECK-NEXT:    [[S1:%.*]] = call { i32, i32 } @foo(i32 1, i32 2)
+; CHECK-NEXT:    [[S2:%.*]] = invoke { i32, i32 } @foo(i32 3, i32 4)
+; CHECK-NEXT:    to label [[OK:%.*]] unwind label [[LPAD:%.*]]
+; CHECK:       OK:
+; CHECK-NEXT:    [[Z:%.*]] = add i32 1, 3
+; CHECK-NEXT:    store i32 [[Z]], i32* [[Q]], align 4
+; CHECK-NEXT:    br label [[RET:%.*]]
+; CHECK:       LPAD:
+; CHECK-NEXT:    [[EXN:%.*]] = landingpad { i8*, i32 }
+; CHECK-NEXT:    cleanup
+; CHECK-NEXT:    br label [[RET]]
+; CHECK:       RET:
+; CHECK-NEXT:    ret void
+;
+  %Q = alloca i32
+  ;; Call incdec to see if %W is properly replaced by %Q
+  %W = call i32* @incdec(i1 %C, i32* %Q )             ; <i32> [#uses=1]
+  ;; Call @foo twice, to prevent the arguments from propagating into the
+  ;; function (so we can check the returned argument is properly
+  ;; propagated per-caller).
+  %S1 = call { i32, i32 } @foo(i32 1, i32 2)
+  %X1 = extractvalue { i32, i32 } %S1, 0
+  %S2 = invoke { i32, i32 } @foo(i32 3, i32 4) to label %OK unwind label %LPAD
 
 OK:
-        %X2 = extractvalue { i32, i32 } %S2, 0
-        ;; Do some stuff with the returned values which we can grep for
-        %Z  = add i32 %X1, %X2
-        store i32 %Z, i32* %W
-        br label %RET
+  %X2 = extractvalue { i32, i32 } %S2, 0
+  ;; Do some stuff with the returned values which we can grep for
+  %Z  = add i32 %X1, %X2
+  store i32 %Z, i32* %W
+  br label %RET
 
 LPAD:
-        %exn = landingpad {i8*, i32}
-                 cleanup
-        br label %RET
+  %exn = landingpad {i8*, i32}
+  cleanup
+  br label %RET
 
 RET:
-        ret void
+  ret void
 }
 
 declare i32 @__gxx_personality_v0(...)

diff  --git a/llvm/test/Transforms/IPConstantProp/return-constant.ll b/llvm/test/Transforms/IPConstantProp/return-constant.ll
index 155a3011dd66..d75aa9b96931 100644
--- a/llvm/test/Transforms/IPConstantProp/return-constant.ll
+++ b/llvm/test/Transforms/IPConstantProp/return-constant.ll
@@ -1,34 +1,52 @@
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
 ; RUN: opt < %s -ipconstprop -instcombine -S | FileCheck %s
 
-; CHECK: ret i1 true
-; CHECK: ret i1 true
-; CHECK-NOT: ret i1 true
-
 define internal i32 @foo(i1 %C) {
-        br i1 %C, label %T, label %F
+; CHECK-LABEL: @foo(
+; CHECK-NEXT:    br i1 [[C:%.*]], label [[T:%.*]], label [[F:%.*]]
+; CHECK:       T:
+; CHECK-NEXT:    ret i32 52
+; CHECK:       F:
+; CHECK-NEXT:    ret i32 52
+;
+  br i1 %C, label %T, label %F
 
 T:              ; preds = %0
-        ret i32 52
+  ret i32 52
 
 F:              ; preds = %0
-        ret i32 52
+  ret i32 52
 }
 
 define i1 @caller(i1 %C) {
-        %X = call i32 @foo( i1 %C )             ; <i32> [#uses=1]
-        %Y = icmp ne i32 %X, 0          ; <i1> [#uses=1]
-        ret i1 %Y
+; CHECK-LABEL: @caller(
+; CHECK-NEXT:    [[X:%.*]] = call i32 @foo(i1 [[C:%.*]])
+; CHECK-NEXT:    ret i1 true
+;
+  %X = call i32 @foo( i1 %C )             ; <i32> [#uses=1]
+  %Y = icmp ne i32 %X, 0          ; <i1> [#uses=1]
+  ret i1 %Y
 }
 
 define i1 @invokecaller(i1 %C) personality i32 (...)* @__gxx_personality_v0 {
-        %X = invoke i32 @foo( i1 %C ) to label %OK unwind label %FAIL             ; <i32> [#uses=1]
+; CHECK-LABEL: @invokecaller(
+; CHECK-NEXT:    [[X:%.*]] = invoke i32 @foo(i1 [[C:%.*]])
+; CHECK-NEXT:    to label [[OK:%.*]] unwind label [[FAIL:%.*]]
+; CHECK:       OK:
+; CHECK-NEXT:    ret i1 true
+; CHECK:       FAIL:
+; CHECK-NEXT:    [[EXN:%.*]] = landingpad { i8*, i32 }
+; CHECK-NEXT:    cleanup
+; CHECK-NEXT:    ret i1 false
+;
+  %X = invoke i32 @foo( i1 %C ) to label %OK unwind label %FAIL             ; <i32> [#uses=1]
 OK:
-        %Y = icmp ne i32 %X, 0          ; <i1> [#uses=1]
-        ret i1 %Y 
+  %Y = icmp ne i32 %X, 0          ; <i1> [#uses=1]
+  ret i1 %Y
 FAIL:
-        %exn = landingpad {i8*, i32}
-                 cleanup
-        ret i1 false
+  %exn = landingpad {i8*, i32}
+  cleanup
+  ret i1 false
 }
 
 declare i32 @__gxx_personality_v0(...)

diff  --git a/llvm/test/Transforms/IPConstantProp/return-constants.ll b/llvm/test/Transforms/IPConstantProp/return-constants.ll
index 40b97ad04a9d..461106731614 100644
--- a/llvm/test/Transforms/IPConstantProp/return-constants.ll
+++ b/llvm/test/Transforms/IPConstantProp/return-constants.ll
@@ -1,13 +1,20 @@
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
 ; RUN: opt < %s -ipconstprop -S | FileCheck %s
 
-;; Check that the 21 constants got propagated properly
-; CHECK: %M = add i32 21, 21
-;; Check that the second return values didn't get propagated
-; CHECK: %N = add i32 %B, %D
-
 %0 = type { i32, i32 }
 
 define internal %0 @foo(i1 %Q) {
+; CHECK-LABEL: @foo(
+; CHECK-NEXT:    br i1 [[Q:%.*]], label [[T:%.*]], label [[F:%.*]]
+; CHECK:       T:
+; CHECK-NEXT:    [[MRV:%.*]] = insertvalue [[TMP0:%.*]] undef, i32 21, 0
+; CHECK-NEXT:    [[MRV1:%.*]] = insertvalue [[TMP0]] %mrv, i32 22, 1
+; CHECK-NEXT:    ret [[TMP0]] %mrv1
+; CHECK:       F:
+; CHECK-NEXT:    [[MRV2:%.*]] = insertvalue [[TMP0]] undef, i32 21, 0
+; CHECK-NEXT:    [[MRV3:%.*]] = insertvalue [[TMP0]] %mrv2, i32 23, 1
+; CHECK-NEXT:    ret [[TMP0]] %mrv3
+;
   br i1 %Q, label %T, label %F
 
 T:                                                ; preds = %0
@@ -22,6 +29,16 @@ F:                                                ; preds = %0
 }
 
 define internal %0 @bar(i1 %Q) {
+; CHECK-LABEL: @bar(
+; CHECK-NEXT:    [[A:%.*]] = insertvalue [[TMP0:%.*]] undef, i32 21, 0
+; CHECK-NEXT:    br i1 [[Q:%.*]], label [[T:%.*]], label [[F:%.*]]
+; CHECK:       T:
+; CHECK-NEXT:    [[B:%.*]] = insertvalue [[TMP0]] %A, i32 22, 1
+; CHECK-NEXT:    ret [[TMP0]] %B
+; CHECK:       F:
+; CHECK-NEXT:    [[C:%.*]] = insertvalue [[TMP0]] %A, i32 23, 1
+; CHECK-NEXT:    ret [[TMP0]] %C
+;
   %A = insertvalue %0 undef, i32 21, 0
   br i1 %Q, label %T, label %F
 
@@ -35,6 +52,15 @@ F:                                                ; preds = %0
 }
 
 define %0 @caller(i1 %Q) {
+; CHECK-LABEL: @caller(
+; CHECK-NEXT:    [[X:%.*]] = call [[TMP0:%.*]] @foo(i1 [[Q:%.*]])
+; CHECK-NEXT:    [[B:%.*]] = extractvalue [[TMP0]] %X, 1
+; CHECK-NEXT:    [[Y:%.*]] = call [[TMP0]] @bar(i1 [[Q]])
+; CHECK-NEXT:    [[D:%.*]] = extractvalue [[TMP0]] %Y, 1
+; CHECK-NEXT:    [[M:%.*]] = add i32 21, 21
+; CHECK-NEXT:    [[N:%.*]] = add i32 [[B]], [[D]]
+; CHECK-NEXT:    ret [[TMP0]] %X
+;
   %X = call %0 @foo(i1 %Q)
   %A = extractvalue %0 %X, 0
   %B = extractvalue %0 %X, 1

diff  --git a/llvm/test/Transforms/IPConstantProp/thread_local_acs.ll b/llvm/test/Transforms/IPConstantProp/thread_local_acs.ll
index 0595a5ca7f13..3f843d26077a 100644
--- a/llvm/test/Transforms/IPConstantProp/thread_local_acs.ll
+++ b/llvm/test/Transforms/IPConstantProp/thread_local_acs.ll
@@ -1,3 +1,4 @@
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
 ; RUN: opt -ipconstprop -S < %s | FileCheck %s
 ;
 ;    #include <threads.h>
@@ -20,10 +21,14 @@ target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 @gsh = dso_local global i32 0, align 4
 
 define internal i32 @callee(i32* %thread_local_ptr, i32* %shared_ptr) {
+; CHECK-LABEL: @callee(
+; CHECK-NEXT:  entry:
+; CHECK-NEXT:    [[TMP:%.*]] = load i32, i32* [[THREAD_LOCAL_PTR:%.*]], align 4
+; CHECK-NEXT:    [[TMP1:%.*]] = load i32, i32* @gsh, align 4
+; CHECK-NEXT:    [[ADD:%.*]] = add nsw i32 [[TMP]], [[TMP1]]
+; CHECK-NEXT:    ret i32 [[ADD]]
+;
 entry:
-; CHECK:  %tmp = load i32, i32* %thread_local_ptr, align 4
-; CHECK:  %tmp1 = load i32, i32* @gsh, align 4
-; CHECK:  %add = add nsw i32 %tmp, %tmp1
   %tmp = load i32, i32* %thread_local_ptr, align 4
   %tmp1 = load i32, i32* %shared_ptr, align 4
   %add = add nsw i32 %tmp, %tmp1
@@ -31,6 +36,11 @@ entry:
 }
 
 define dso_local void @caller() {
+; CHECK-LABEL: @caller(
+; CHECK-NEXT:  entry:
+; CHECK-NEXT:    call void @broker(i32* nonnull @gtl, i32 (i32*, i32*)* nonnull @callee, i32* nonnull @gsh)
+; CHECK-NEXT:    ret void
+;
 entry:
   call void @broker(i32* nonnull @gtl, i32 (i32*, i32*)* nonnull @callee, i32* nonnull @gsh)
   ret void


        


More information about the llvm-commits mailing list