diff options
Diffstat (limited to 'test/Transforms/InstCombine')
46 files changed, 339 insertions, 229 deletions
diff --git a/test/Transforms/InstCombine/2003-08-12-AllocaNonNull.ll b/test/Transforms/InstCombine/2003-08-12-AllocaNonNull.ll index bb9a818..50b9fdb 100644 --- a/test/Transforms/InstCombine/2003-08-12-AllocaNonNull.ll +++ b/test/Transforms/InstCombine/2003-08-12-AllocaNonNull.ll @@ -12,7 +12,7 @@ entry: br i1 %tmp.1, label %then, label %UnifiedExitNode then: ; preds = %entry - %tmp.4 = call i32 (...)* @bitmap_clear( i32* %live_head ) ; <i32> [#uses=0] + %tmp.4 = call i32 (...) @bitmap_clear( i32* %live_head ) ; <i32> [#uses=0] br label %UnifiedExitNode UnifiedExitNode: ; preds = %then, %entry diff --git a/test/Transforms/InstCombine/2003-11-03-VarargsCallBug.ll b/test/Transforms/InstCombine/2003-11-03-VarargsCallBug.ll index c1692f7..aff39f8 100644 --- a/test/Transforms/InstCombine/2003-11-03-VarargsCallBug.ll +++ b/test/Transforms/InstCombine/2003-11-03-VarargsCallBug.ll @@ -7,7 +7,7 @@ declare void @foo(...) define void @test(i64 %X) { %Y = inttoptr i64 %X to i32* ; <i32*> [#uses=1] - call void (...)* @foo( i32* %Y ) + call void (...) @foo( i32* %Y ) ret void } diff --git a/test/Transforms/InstCombine/2007-02-01-LoadSinkAlloca.ll b/test/Transforms/InstCombine/2007-02-01-LoadSinkAlloca.ll index 20bbd28..113ada3 100644 --- a/test/Transforms/InstCombine/2007-02-01-LoadSinkAlloca.ll +++ b/test/Transforms/InstCombine/2007-02-01-LoadSinkAlloca.ll @@ -10,7 +10,7 @@ define i32 @test2(i32 %C) { entry: %A = alloca i32 %B = alloca i32 - %tmp = call i32 (...)* @bar( i32* %A ) ; <i32> [#uses=0] + %tmp = call i32 (...) @bar( i32* %A ) ; <i32> [#uses=0] %T = load i32, i32* %A ; <i32> [#uses=1] %tmp2 = icmp eq i32 %C, 0 ; <i1> [#uses=1] br i1 %tmp2, label %cond_next, label %cond_true @@ -23,20 +23,20 @@ cond_true: ; preds = %entry cond_next: ; preds = %cond_true, %entry %tmp1.0 = phi i32 [ %T1, %cond_true ], [ %T, %entry ] ; <i32> [#uses=1] - %tmp7 = call i32 (...)* @baq( ) ; <i32> [#uses=0] - %tmp8 = call i32 (...)* @baq( ) ; <i32> [#uses=0] - %tmp9 = call i32 (...)* @baq( ) ; <i32> [#uses=0] - %tmp10 = call i32 (...)* @baq( ) ; <i32> [#uses=0] - %tmp11 = call i32 (...)* @baq( ) ; <i32> [#uses=0] - %tmp12 = call i32 (...)* @baq( ) ; <i32> [#uses=0] - %tmp13 = call i32 (...)* @baq( ) ; <i32> [#uses=0] - %tmp14 = call i32 (...)* @baq( ) ; <i32> [#uses=0] - %tmp15 = call i32 (...)* @baq( ) ; <i32> [#uses=0] - %tmp16 = call i32 (...)* @baq( ) ; <i32> [#uses=0] - %tmp17 = call i32 (...)* @baq( ) ; <i32> [#uses=0] - %tmp18 = call i32 (...)* @baq( ) ; <i32> [#uses=0] - %tmp19 = call i32 (...)* @baq( ) ; <i32> [#uses=0] - %tmp20 = call i32 (...)* @baq( ) ; <i32> [#uses=0] + %tmp7 = call i32 (...) @baq( ) ; <i32> [#uses=0] + %tmp8 = call i32 (...) @baq( ) ; <i32> [#uses=0] + %tmp9 = call i32 (...) @baq( ) ; <i32> [#uses=0] + %tmp10 = call i32 (...) @baq( ) ; <i32> [#uses=0] + %tmp11 = call i32 (...) @baq( ) ; <i32> [#uses=0] + %tmp12 = call i32 (...) @baq( ) ; <i32> [#uses=0] + %tmp13 = call i32 (...) @baq( ) ; <i32> [#uses=0] + %tmp14 = call i32 (...) @baq( ) ; <i32> [#uses=0] + %tmp15 = call i32 (...) @baq( ) ; <i32> [#uses=0] + %tmp16 = call i32 (...) @baq( ) ; <i32> [#uses=0] + %tmp17 = call i32 (...) @baq( ) ; <i32> [#uses=0] + %tmp18 = call i32 (...) @baq( ) ; <i32> [#uses=0] + %tmp19 = call i32 (...) @baq( ) ; <i32> [#uses=0] + %tmp20 = call i32 (...) @baq( ) ; <i32> [#uses=0] ret i32 %tmp1.0 } diff --git a/test/Transforms/InstCombine/2007-02-07-PointerCast.ll b/test/Transforms/InstCombine/2007-02-07-PointerCast.ll index 760b6dc..ddc1e03 100644 --- a/test/Transforms/InstCombine/2007-02-07-PointerCast.ll +++ b/test/Transforms/InstCombine/2007-02-07-PointerCast.ll @@ -16,7 +16,7 @@ entry: %tmp1 = load i8*, i8** %a ; <i8*> [#uses=1] %tmp2 = ptrtoint i8* %tmp1 to i32 ; <i32> [#uses=1] %tmp3 = zext i32 %tmp2 to i64 ; <i64> [#uses=1] - %tmp.upgrd.1 = call i32 (i8*, ...)* @printf( i8* %tmp, i64 %tmp3 ) ; <i32> [#uses=0] + %tmp.upgrd.1 = call i32 (i8*, ...) @printf( i8* %tmp, i64 %tmp3 ) ; <i32> [#uses=0] ret i32 0 } diff --git a/test/Transforms/InstCombine/2007-11-25-CompatibleAttributes.ll b/test/Transforms/InstCombine/2007-11-25-CompatibleAttributes.ll index 04a5aaa..1232005 100644 --- a/test/Transforms/InstCombine/2007-11-25-CompatibleAttributes.ll +++ b/test/Transforms/InstCombine/2007-11-25-CompatibleAttributes.ll @@ -5,7 +5,7 @@ define i32 @main(i32 %argc, i8** %argv) { entry: - %tmp32 = tail call i32 (i8* , ...) * bitcast (i32 (i8*, ...) * @printf to i32 (i8* , ...) *)( i8* getelementptr ([4 x i8], [4 x i8]* @.str, i32 0, i32 0) , i32 0 ) nounwind ; <i32> [#uses=0] + %tmp32 = tail call i32 (i8* , ...) bitcast (i32 (i8*, ...) * @printf to i32 (i8* , ...) *)( i8* getelementptr ([4 x i8], [4 x i8]* @.str, i32 0, i32 0) , i32 0 ) nounwind ; <i32> [#uses=0] ret i32 undef } diff --git a/test/Transforms/InstCombine/2008-01-14-VarArgTrampoline.ll b/test/Transforms/InstCombine/2008-01-14-VarArgTrampoline.ll index 46d0694..b111b85 100644 --- a/test/Transforms/InstCombine/2008-01-14-VarArgTrampoline.ll +++ b/test/Transforms/InstCombine/2008-01-14-VarArgTrampoline.ll @@ -21,6 +21,6 @@ entry: %tmp7 = getelementptr %struct.FRAME.nest, %struct.FRAME.nest* %FRAME.0, i32 0, i32 1 ; <i32 (...)**> [#uses=1] %tmp89 = bitcast i8* %tramp to i32 (...)* ; <i32 (...)*> [#uses=2] store i32 (...)* %tmp89, i32 (...)** %tmp7, align 8 - %tmp2.i = call i32 (...)* %tmp89( i32 zeroext 0 ) ; <i32> [#uses=1] + %tmp2.i = call i32 (...) %tmp89( i32 zeroext 0 ) ; <i32> [#uses=1] ret i32 %tmp2.i } diff --git a/test/Transforms/InstCombine/2008-04-22-ByValBitcast.ll b/test/Transforms/InstCombine/2008-04-22-ByValBitcast.ll index aa38065..1ea0998 100644 --- a/test/Transforms/InstCombine/2008-04-22-ByValBitcast.ll +++ b/test/Transforms/InstCombine/2008-04-22-ByValBitcast.ll @@ -8,7 +8,7 @@ target triple = "i386-apple-darwin9" define void @foo(i8* %context) nounwind { entry: %tmp1 = bitcast i8* %context to %struct.NSRect* ; <%struct.NSRect*> [#uses=1] - call void (i32, ...)* @bar( i32 3, %struct.NSRect* byval align 4 %tmp1 ) nounwind + call void (i32, ...) @bar( i32 3, %struct.NSRect* byval align 4 %tmp1 ) nounwind ret void } diff --git a/test/Transforms/InstCombine/2008-05-08-LiveStoreDelete.ll b/test/Transforms/InstCombine/2008-05-08-LiveStoreDelete.ll index e007e6f..9073820 100644 --- a/test/Transforms/InstCombine/2008-05-08-LiveStoreDelete.ll +++ b/test/Transforms/InstCombine/2008-05-08-LiveStoreDelete.ll @@ -14,7 +14,7 @@ entry: %tmp7 = call i32 @strlen( i8* %tmp1 ) nounwind readonly ; <i32> [#uses=1] %tmp9 = getelementptr i8, i8* %tmp1, i32 0 ; <i8*> [#uses=1] store i8 0, i8* %tmp9, align 1 - %tmp11 = call i32 (...)* @b( i8* %tmp1 ) nounwind ; <i32> [#uses=0] + %tmp11 = call i32 (...) @b( i8* %tmp1 ) nounwind ; <i32> [#uses=0] ret i32 %tmp7 } diff --git a/test/Transforms/InstCombine/2008-05-08-StrLenSink.ll b/test/Transforms/InstCombine/2008-05-08-StrLenSink.ll index af0ffeb..ce19233 100644 --- a/test/Transforms/InstCombine/2008-05-08-StrLenSink.ll +++ b/test/Transforms/InstCombine/2008-05-08-StrLenSink.ll @@ -18,7 +18,7 @@ entry: %tmp7 = call i32 @strlen( i8* %tmp1 ) nounwind readonly ; <i32> [#uses=1] %tmp9 = getelementptr i8, i8* %tmp1, i32 0 ; <i8*> [#uses=1] store i8 0, i8* %tmp9, align 1 - %tmp11 = call i32 (...)* @b( i8* %tmp1 ) nounwind ; <i32> [#uses=0] + %tmp11 = call i32 (...) @b( i8* %tmp1 ) nounwind ; <i32> [#uses=0] br label %return return: ; preds = %entry diff --git a/test/Transforms/InstCombine/2008-06-08-ICmpPHI.ll b/test/Transforms/InstCombine/2008-06-08-ICmpPHI.ll index ec94623..7e8341b 100644 --- a/test/Transforms/InstCombine/2008-06-08-ICmpPHI.ll +++ b/test/Transforms/InstCombine/2008-06-08-ICmpPHI.ll @@ -7,28 +7,28 @@ entry: bb: ; preds = %bb16, %entry %i.0 = phi i32 [ 0, %entry ], [ %indvar.next, %somebb ] ; <i32> [#uses=1] %x.0 = phi i32 [ 37, %entry ], [ %tmp17, %somebb ] ; <i32> [#uses=1] - %tmp = tail call i32 (...)* @bork( ) nounwind ; <i32> [#uses=0] - %tmp1 = tail call i32 (...)* @bork( ) nounwind ; <i32> [#uses=0] - %tmp2 = tail call i32 (...)* @bork( ) nounwind ; <i32> [#uses=1] + %tmp = tail call i32 (...) @bork( ) nounwind ; <i32> [#uses=0] + %tmp1 = tail call i32 (...) @bork( ) nounwind ; <i32> [#uses=0] + %tmp2 = tail call i32 (...) @bork( ) nounwind ; <i32> [#uses=1] %tmp3 = icmp eq i32 %tmp2, 0 ; <i1> [#uses=1] br i1 %tmp3, label %bb7, label %bb5 bb5: ; preds = %bb - %tmp6 = tail call i32 (...)* @bork( ) nounwind ; <i32> [#uses=0] + %tmp6 = tail call i32 (...) @bork( ) nounwind ; <i32> [#uses=0] br label %bb7 bb7: ; preds = %bb5, %bb - %tmp8 = tail call i32 (...)* @bork( ) nounwind ; <i32> [#uses=0] - %tmp9 = tail call i32 (...)* @bork( ) nounwind ; <i32> [#uses=0] + %tmp8 = tail call i32 (...) @bork( ) nounwind ; <i32> [#uses=0] + %tmp9 = tail call i32 (...) @bork( ) nounwind ; <i32> [#uses=0] %tmp11 = icmp eq i32 %x.0, 37 ; <i1> [#uses=1] br i1 %tmp11, label %bb14, label %bb16 bb14: ; preds = %bb7 - %tmp15 = tail call i32 (...)* @bar( ) nounwind ; <i32> [#uses=0] + %tmp15 = tail call i32 (...) @bar( ) nounwind ; <i32> [#uses=0] br label %bb16 bb16: ; preds = %bb14, %bb7 - %tmp17 = tail call i32 (...)* @zap( ) nounwind ; <i32> [#uses=1] + %tmp17 = tail call i32 (...) @zap( ) nounwind ; <i32> [#uses=1] %indvar.next = add i32 %i.0, 1 ; <i32> [#uses=2] %exitcond = icmp eq i32 %indvar.next, 42 ; <i1> [#uses=1] br i1 %exitcond, label %return, label %somebb diff --git a/test/Transforms/InstCombine/2009-01-08-AlignAlloca.ll b/test/Transforms/InstCombine/2009-01-08-AlignAlloca.ll index 23ed5aa..9994b58 100644 --- a/test/Transforms/InstCombine/2009-01-08-AlignAlloca.ll +++ b/test/Transforms/InstCombine/2009-01-08-AlignAlloca.ll @@ -20,7 +20,7 @@ entry: %3 = getelementptr %struct.Key, %struct.Key* %iospec, i32 0, i32 0 ; <{ i32, i32 }*> [#uses=1] %4 = bitcast { i32, i32 }* %3 to i64* ; <i64*> [#uses=1] store i64 %key_token2, i64* %4, align 4 - %5 = call i32 (...)* @foo(%struct.Key* byval align 4 %iospec, i32* %ret) nounwind ; <i32> [#uses=0] + %5 = call i32 (...) @foo(%struct.Key* byval align 4 %iospec, i32* %ret) nounwind ; <i32> [#uses=0] %6 = load i32, i32* %ret, align 4 ; <i32> [#uses=1] ret i32 %6 } diff --git a/test/Transforms/InstCombine/2009-01-19-fmod-constant-float-specials.ll b/test/Transforms/InstCombine/2009-01-19-fmod-constant-float-specials.ll index cb7431b..b9aa0a2 100644 --- a/test/Transforms/InstCombine/2009-01-19-fmod-constant-float-specials.ll +++ b/test/Transforms/InstCombine/2009-01-19-fmod-constant-float-specials.ll @@ -20,7 +20,7 @@ entry: %2 = load float, float* %x, align 4 ; <float> [#uses=1] %3 = fpext float %2 to double ; <double> [#uses=1] %4 = frem double %3, %1 ; <double> [#uses=1] - %5 = call i32 (i8*, ...)* @printf(i8* getelementptr ([4 x i8], [4 x i8]* @"\01LC", i32 0, i32 0), double %4) nounwind ; <i32> [#uses=0] + %5 = call i32 (i8*, ...) @printf(i8* getelementptr ([4 x i8], [4 x i8]* @"\01LC", i32 0, i32 0), double %4) nounwind ; <i32> [#uses=0] br label %return return: ; preds = %entry @@ -41,7 +41,7 @@ entry: %2 = load float, float* %x, align 4 ; <float> [#uses=1] %3 = fpext float %2 to double ; <double> [#uses=1] %4 = frem double %3, %1 ; <double> [#uses=1] - %5 = call i32 (i8*, ...)* @printf(i8* getelementptr ([4 x i8], [4 x i8]* @"\01LC", i32 0, i32 0), double %4) nounwind ; <i32> [#uses=0] + %5 = call i32 (i8*, ...) @printf(i8* getelementptr ([4 x i8], [4 x i8]* @"\01LC", i32 0, i32 0), double %4) nounwind ; <i32> [#uses=0] br label %return return: ; preds = %entry @@ -60,7 +60,7 @@ entry: %2 = load float, float* %x, align 4 ; <float> [#uses=1] %3 = fpext float %2 to double ; <double> [#uses=1] %4 = frem double %3, %1 ; <double> [#uses=1] - %5 = call i32 (i8*, ...)* @printf(i8* getelementptr ([4 x i8], [4 x i8]* @"\01LC", i32 0, i32 0), double %4) nounwind ; <i32> [#uses=0] + %5 = call i32 (i8*, ...) @printf(i8* getelementptr ([4 x i8], [4 x i8]* @"\01LC", i32 0, i32 0), double %4) nounwind ; <i32> [#uses=0] br label %return return: ; preds = %entry @@ -79,7 +79,7 @@ entry: %2 = load float, float* %x, align 4 ; <float> [#uses=1] %3 = fpext float %2 to double ; <double> [#uses=1] %4 = frem double %3, %1 ; <double> [#uses=1] - %5 = call i32 (i8*, ...)* @printf(i8* getelementptr ([4 x i8], [4 x i8]* @"\01LC", i32 0, i32 0), double %4) nounwind ; <i32> [#uses=0] + %5 = call i32 (i8*, ...) @printf(i8* getelementptr ([4 x i8], [4 x i8]* @"\01LC", i32 0, i32 0), double %4) nounwind ; <i32> [#uses=0] br label %return return: ; preds = %entry @@ -98,7 +98,7 @@ entry: %2 = load float, float* %x, align 4 ; <float> [#uses=1] %3 = fpext float %2 to double ; <double> [#uses=1] %4 = frem double %3, %1 ; <double> [#uses=1] - %5 = call i32 (i8*, ...)* @printf(i8* getelementptr ([4 x i8], [4 x i8]* @"\01LC", i32 0, i32 0), double %4) nounwind ; <i32> [#uses=0] + %5 = call i32 (i8*, ...) @printf(i8* getelementptr ([4 x i8], [4 x i8]* @"\01LC", i32 0, i32 0), double %4) nounwind ; <i32> [#uses=0] br label %return return: ; preds = %entry @@ -117,7 +117,7 @@ entry: %2 = load float, float* %x, align 4 ; <float> [#uses=1] %3 = fpext float %2 to double ; <double> [#uses=1] %4 = frem double %3, %1 ; <double> [#uses=1] - %5 = call i32 (i8*, ...)* @printf(i8* getelementptr ([4 x i8], [4 x i8]* @"\01LC", i32 0, i32 0), double %4) nounwind ; <i32> [#uses=0] + %5 = call i32 (i8*, ...) @printf(i8* getelementptr ([4 x i8], [4 x i8]* @"\01LC", i32 0, i32 0), double %4) nounwind ; <i32> [#uses=0] br label %return return: ; preds = %entry @@ -136,7 +136,7 @@ entry: %2 = load float, float* %x, align 4 ; <float> [#uses=1] %3 = fpext float %2 to double ; <double> [#uses=1] %4 = frem double %3, %1 ; <double> [#uses=1] - %5 = call i32 (i8*, ...)* @printf(i8* getelementptr ([4 x i8], [4 x i8]* @"\01LC", i32 0, i32 0), double %4) nounwind ; <i32> [#uses=0] + %5 = call i32 (i8*, ...) @printf(i8* getelementptr ([4 x i8], [4 x i8]* @"\01LC", i32 0, i32 0), double %4) nounwind ; <i32> [#uses=0] br label %return return: ; preds = %entry @@ -155,7 +155,7 @@ entry: %2 = load float, float* %x, align 4 ; <float> [#uses=1] %3 = fpext float %2 to double ; <double> [#uses=1] %4 = frem double %3, %1 ; <double> [#uses=1] - %5 = call i32 (i8*, ...)* @printf(i8* getelementptr ([4 x i8], [4 x i8]* @"\01LC", i32 0, i32 0), double %4) nounwind ; <i32> [#uses=0] + %5 = call i32 (i8*, ...) @printf(i8* getelementptr ([4 x i8], [4 x i8]* @"\01LC", i32 0, i32 0), double %4) nounwind ; <i32> [#uses=0] br label %return return: ; preds = %entry @@ -174,7 +174,7 @@ entry: %2 = load float, float* %x, align 4 ; <float> [#uses=1] %3 = fpext float %2 to double ; <double> [#uses=1] %4 = frem double %3, %1 ; <double> [#uses=1] - %5 = call i32 (i8*, ...)* @printf(i8* getelementptr ([4 x i8], [4 x i8]* @"\01LC", i32 0, i32 0), double %4) nounwind ; <i32> [#uses=0] + %5 = call i32 (i8*, ...) @printf(i8* getelementptr ([4 x i8], [4 x i8]* @"\01LC", i32 0, i32 0), double %4) nounwind ; <i32> [#uses=0] br label %return return: ; preds = %entry @@ -193,7 +193,7 @@ entry: %2 = load float, float* %x, align 4 ; <float> [#uses=1] %3 = fpext float %2 to double ; <double> [#uses=1] %4 = frem double %3, %1 ; <double> [#uses=1] - %5 = call i32 (i8*, ...)* @printf(i8* getelementptr ([4 x i8], [4 x i8]* @"\01LC", i32 0, i32 0), double %4) nounwind ; <i32> [#uses=0] + %5 = call i32 (i8*, ...) @printf(i8* getelementptr ([4 x i8], [4 x i8]* @"\01LC", i32 0, i32 0), double %4) nounwind ; <i32> [#uses=0] br label %return return: ; preds = %entry @@ -212,7 +212,7 @@ entry: %2 = load float, float* %x, align 4 ; <float> [#uses=1] %3 = fpext float %2 to double ; <double> [#uses=1] %4 = frem double %3, %1 ; <double> [#uses=1] - %5 = call i32 (i8*, ...)* @printf(i8* getelementptr ([4 x i8], [4 x i8]* @"\01LC", i32 0, i32 0), double %4) nounwind ; <i32> [#uses=0] + %5 = call i32 (i8*, ...) @printf(i8* getelementptr ([4 x i8], [4 x i8]* @"\01LC", i32 0, i32 0), double %4) nounwind ; <i32> [#uses=0] br label %return return: ; preds = %entry @@ -231,7 +231,7 @@ entry: %2 = load float, float* %x, align 4 ; <float> [#uses=1] %3 = fpext float %2 to double ; <double> [#uses=1] %4 = frem double %3, %1 ; <double> [#uses=1] - %5 = call i32 (i8*, ...)* @printf(i8* getelementptr ([4 x i8], [4 x i8]* @"\01LC", i32 0, i32 0), double %4) nounwind ; <i32> [#uses=0] + %5 = call i32 (i8*, ...) @printf(i8* getelementptr ([4 x i8], [4 x i8]* @"\01LC", i32 0, i32 0), double %4) nounwind ; <i32> [#uses=0] br label %return return: ; preds = %entry @@ -250,7 +250,7 @@ entry: %2 = load float, float* %x, align 4 ; <float> [#uses=1] %3 = fpext float %2 to double ; <double> [#uses=1] %4 = frem double %3, %1 ; <double> [#uses=1] - %5 = call i32 (i8*, ...)* @printf(i8* getelementptr ([4 x i8], [4 x i8]* @"\01LC", i32 0, i32 0), double %4) nounwind ; <i32> [#uses=0] + %5 = call i32 (i8*, ...) @printf(i8* getelementptr ([4 x i8], [4 x i8]* @"\01LC", i32 0, i32 0), double %4) nounwind ; <i32> [#uses=0] br label %return return: ; preds = %entry @@ -269,7 +269,7 @@ entry: %2 = load float, float* %x, align 4 ; <float> [#uses=1] %3 = fpext float %2 to double ; <double> [#uses=1] %4 = frem double %3, %1 ; <double> [#uses=1] - %5 = call i32 (i8*, ...)* @printf(i8* getelementptr ([4 x i8], [4 x i8]* @"\01LC", i32 0, i32 0), double %4) nounwind ; <i32> [#uses=0] + %5 = call i32 (i8*, ...) @printf(i8* getelementptr ([4 x i8], [4 x i8]* @"\01LC", i32 0, i32 0), double %4) nounwind ; <i32> [#uses=0] br label %return return: ; preds = %entry @@ -288,7 +288,7 @@ entry: %2 = load float, float* %x, align 4 ; <float> [#uses=1] %3 = fpext float %2 to double ; <double> [#uses=1] %4 = frem double %3, %1 ; <double> [#uses=1] - %5 = call i32 (i8*, ...)* @printf(i8* getelementptr ([4 x i8], [4 x i8]* @"\01LC", i32 0, i32 0), double %4) nounwind ; <i32> [#uses=0] + %5 = call i32 (i8*, ...) @printf(i8* getelementptr ([4 x i8], [4 x i8]* @"\01LC", i32 0, i32 0), double %4) nounwind ; <i32> [#uses=0] br label %return return: ; preds = %entry @@ -307,7 +307,7 @@ entry: %2 = load float, float* %x, align 4 ; <float> [#uses=1] %3 = fpext float %2 to double ; <double> [#uses=1] %4 = frem double %3, %1 ; <double> [#uses=1] - %5 = call i32 (i8*, ...)* @printf(i8* getelementptr ([4 x i8], [4 x i8]* @"\01LC", i32 0, i32 0), double %4) nounwind ; <i32> [#uses=0] + %5 = call i32 (i8*, ...) @printf(i8* getelementptr ([4 x i8], [4 x i8]* @"\01LC", i32 0, i32 0), double %4) nounwind ; <i32> [#uses=0] br label %return return: ; preds = %entry diff --git a/test/Transforms/InstCombine/2010-05-30-memcpy-Struct.ll b/test/Transforms/InstCombine/2010-05-30-memcpy-Struct.ll index 29ceb6d..5161069 100644 --- a/test/Transforms/InstCombine/2010-05-30-memcpy-Struct.ll +++ b/test/Transforms/InstCombine/2010-05-30-memcpy-Struct.ll @@ -10,7 +10,7 @@ target triple = "x86_64-unknown-linux-gnu" define void @CopyEventArg(%union.anon* %ev) nounwind { entry: - %call = call i32 (i8*, i8*, ...)* @sprintf(i8* undef, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), %union.anon* %ev) nounwind + %call = call i32 (i8*, i8*, ...) @sprintf(i8* undef, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), %union.anon* %ev) nounwind ; CHECK: bitcast %union.anon* %ev to i8* ; CHECK: call void @llvm.memcpy.p0i8.p0i8.i64 ret void diff --git a/test/Transforms/InstCombine/2012-02-13-FCmp.ll b/test/Transforms/InstCombine/2012-02-13-FCmp.ll index 3c4c6de..586f86d 100644 --- a/test/Transforms/InstCombine/2012-02-13-FCmp.ll +++ b/test/Transforms/InstCombine/2012-02-13-FCmp.ll @@ -6,9 +6,9 @@ declare i32 @printf(i8*, ...) define i64 @_Z8tempCastj(i32 %val) uwtable ssp { entry: - %call = call i32 (i8*, ...)* @printf(i8* getelementptr inbounds ([35 x i8], [35 x i8]* @.str1, i64 0, i64 0), i32 %val) + %call = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([35 x i8], [35 x i8]* @.str1, i64 0, i64 0), i32 %val) %conv = uitofp i32 %val to double - %call.i = call i32 (i8*, ...)* @printf(i8* getelementptr inbounds ([35 x i8], [35 x i8]* @.str, i64 0, i64 0), double %conv) + %call.i = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([35 x i8], [35 x i8]* @.str, i64 0, i64 0), double %conv) %cmp.i = fcmp oge double %conv, -1.000000e+00 br i1 %cmp.i, label %land.rhs.i, label %if.end.critedge ; CHECK: br i1 true, label %land.rhs.i, label %if.end.critedge diff --git a/test/Transforms/InstCombine/alloca.ll b/test/Transforms/InstCombine/alloca.ll index 81e2083..b61b75e 100644 --- a/test/Transforms/InstCombine/alloca.ll +++ b/test/Transforms/InstCombine/alloca.ll @@ -13,14 +13,14 @@ declare void @use(...) ; CHECK-NOT: alloca define void @test() { %X = alloca [0 x i32] ; <[0 x i32]*> [#uses=1] - call void (...)* @use( [0 x i32]* %X ) + call void (...) @use( [0 x i32]* %X ) %Y = alloca i32, i32 0 ; <i32*> [#uses=1] - call void (...)* @use( i32* %Y ) + call void (...) @use( i32* %Y ) %Z = alloca { } ; <{ }*> [#uses=1] - call void (...)* @use( { }* %Z ) + call void (...) @use( { }* %Z ) %size = load i32, i32* @int %A = alloca {{}}, i32 %size - call void (...)* @use( {{}}* %A ) + call void (...) @use( {{}}* %A ) ret void } @@ -126,7 +126,7 @@ define void @test8() { ; NODL: alloca [100 x i32] ; NODL: getelementptr inbounds [100 x i32], [100 x i32]* %x1, i64 0, i64 0 %x = alloca i32, i32 100 - call void (...)* @use(i32* %x) + call void (...) @use(i32* %x) ret void } @@ -160,6 +160,6 @@ entry: %v32 = alloca i1, align 8 %v64 = alloca i1, i64 1, align 8 %v33 = alloca i1, i33 1, align 8 - call void (...)* @use(i1* %v32, i1* %v64, i1* %v33) + call void (...) @use(i1* %v32, i1* %v64, i1* %v33) ret void } diff --git a/test/Transforms/InstCombine/call-intrinsics.ll b/test/Transforms/InstCombine/call-intrinsics.ll index f9d1080..3e37a71 100644 --- a/test/Transforms/InstCombine/call-intrinsics.ll +++ b/test/Transforms/InstCombine/call-intrinsics.ll @@ -3,17 +3,17 @@ @X = global i8 0 ; <i8*> [#uses=3] @Y = global i8 12 ; <i8*> [#uses=2] -declare void @llvm.memmove.i32(i8*, i8*, i32, i32) +declare void @llvm.memmove.p0i8.p0i8.i32(i8*, i8*, i32, i32, i1) -declare void @llvm.memcpy.i32(i8*, i8*, i32, i32) +declare void @llvm.memcpy.p0i8.p0i8.i32(i8*, i8*, i32, i32, i1) -declare void @llvm.memset.i32(i8*, i8, i32, i32) +declare void @llvm.memset.p0i8.i32(i8*, i8, i32, i32, i1) define void @zero_byte_test() { ; These process zero bytes, so they are a noop. - call void @llvm.memmove.i32( i8* @X, i8* @Y, i32 0, i32 100 ) - call void @llvm.memcpy.i32( i8* @X, i8* @Y, i32 0, i32 100 ) - call void @llvm.memset.i32( i8* @X, i8 123, i32 0, i32 100 ) + call void @llvm.memmove.p0i8.p0i8.i32( i8* @X, i8* @Y, i32 0, i32 128, i1 false ) + call void @llvm.memcpy.p0i8.p0i8.i32( i8* @X, i8* @Y, i32 0, i32 128, i1 false ) + call void @llvm.memset.p0i8.i32( i8* @X, i8 123, i32 0, i32 128, i1 false ) ret void } diff --git a/test/Transforms/InstCombine/call.ll b/test/Transforms/InstCombine/call.ll index e68c0ad..47ae71f 100644 --- a/test/Transforms/InstCombine/call.ll +++ b/test/Transforms/InstCombine/call.ll @@ -61,7 +61,7 @@ define void @test3a(i8, ...) {unreachable } define void @test3(i8 %A, i8 %B) { ; CHECK-LABEL: @test3( ; CHECK: %1 = zext i8 %B to i32 -; CHECK: call void (i8, ...)* @test3a(i8 %A, i32 %1) +; CHECK: call void (i8, ...) @test3a(i8 %A, i32 %1) ; CHECK: ret void call void bitcast (void (i8, ...)* @test3a to void (i8, i8)*)( i8 %A, i8 %B) ret void diff --git a/test/Transforms/InstCombine/call2.ll b/test/Transforms/InstCombine/call2.ll index 467eb07..70a5b3c 100644 --- a/test/Transforms/InstCombine/call2.ll +++ b/test/Transforms/InstCombine/call2.ll @@ -4,7 +4,7 @@ define i32 @bar() { entry: %retval = alloca i32, align 4 ; <i32*> [#uses=1] - %tmp = call i32 (...)* bitcast (i32 (i8*)* @f to i32 (...)*)( double 3.000000e+00 ) ; <i32> [#uses=0] + %tmp = call i32 (...) bitcast (i32 (i8*)* @f to i32 (...)*)( double 3.000000e+00 ) ; <i32> [#uses=0] br label %return return: ; preds = %entry diff --git a/test/Transforms/InstCombine/cast.ll b/test/Transforms/InstCombine/cast.ll index c577501..c96140e 100644 --- a/test/Transforms/InstCombine/cast.ll +++ b/test/Transforms/InstCombine/cast.ll @@ -93,9 +93,9 @@ declare void @varargs(i32, ...) define void @test11(i32* %P) { %c = bitcast i32* %P to i16* ; <i16*> [#uses=1] - call void (i32, ...)* @varargs( i32 5, i16* %c ) + call void (i32, ...) @varargs( i32 5, i16* %c ) ret void -; CHECK: call void (i32, ...)* @varargs(i32 5, i32* %P) +; CHECK: call void (i32, ...) @varargs(i32 5, i32* %P) ; CHECK: ret void } diff --git a/test/Transforms/InstCombine/debug-line.ll b/test/Transforms/InstCombine/debug-line.ll index a36487a..8e335b8 100644 --- a/test/Transforms/InstCombine/debug-line.ll +++ b/test/Transforms/InstCombine/debug-line.ll @@ -5,7 +5,7 @@ define void @foo() nounwind ssp { ;CHECK: call i32 @putchar{{.+}} !dbg - %1 = call i32 (i8*, ...)* @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i32 0, i32 0), i32 97), !dbg !5 + %1 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i32 0, i32 0), i32 97), !dbg !5 ret void, !dbg !7 } @@ -17,7 +17,7 @@ declare i32 @printf(i8*, ...) !0 = !MDSubprogram(name: "foo", line: 4, isLocal: false, isDefinition: true, virtualIndex: 6, isOptimized: false, file: !8, scope: !1, type: !3, function: void ()* @foo) !1 = !MDFile(filename: "m.c", directory: "/private/tmp") -!2 = !MDCompileUnit(language: DW_LANG_C99, producer: "clang", isOptimized: true, emissionKind: 0, file: !8, enums: !4, retainedTypes: !4, subprograms: !9) +!2 = !MDCompileUnit(language: DW_LANG_C99, producer: "clang", isOptimized: true, emissionKind: 0, file: !8, enums: !{}, retainedTypes: !{}, subprograms: !9) !3 = !MDSubroutineType(types: !4) !4 = !{null} !5 = !MDLocation(line: 5, column: 2, scope: !6) diff --git a/test/Transforms/InstCombine/debuginfo.ll b/test/Transforms/InstCombine/debuginfo.ll index ee02c89..0a2ea0e 100644 --- a/test/Transforms/InstCombine/debuginfo.ll +++ b/test/Transforms/InstCombine/debuginfo.ll @@ -55,5 +55,5 @@ entry: !26 = !MDFile(filename: "bits.c", directory: "Game") !27 = !MDFile(filename: "string.h", directory: "Game") !28 = !MDFile(filename: "bits.c", directory: "Game") -!29 = !{i32 0} +!29 = !{} !30 = !{i32 1, !"Debug Info Version", i32 3} diff --git a/test/Transforms/InstCombine/err-rep-cold.ll b/test/Transforms/InstCombine/err-rep-cold.ll index e4399ab..6c4e4e1 100644 --- a/test/Transforms/InstCombine/err-rep-cold.ll +++ b/test/Transforms/InstCombine/err-rep-cold.ll @@ -19,10 +19,10 @@ entry: if.then: ; preds = %entry %0 = load %struct._IO_FILE*, %struct._IO_FILE** @stderr, align 8 - %call = tail call i32 (%struct._IO_FILE*, i8*, ...)* @fprintf(%struct._IO_FILE* %0, i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str, i64 0, i64 0), i32 %a) #1 + %call = tail call i32 (%struct._IO_FILE*, i8*, ...) @fprintf(%struct._IO_FILE* %0, i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str, i64 0, i64 0), i32 %a) #1 br label %return -; CHECK: %call = tail call i32 (%struct._IO_FILE*, i8*, ...)* @fprintf(%struct._IO_FILE* %0, i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str, i64 0, i64 0), i32 %a) #[[AT1:[0-9]+]] +; CHECK: %call = tail call i32 (%struct._IO_FILE*, i8*, ...) @fprintf(%struct._IO_FILE* %0, i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str, i64 0, i64 0), i32 %a) #[[AT1:[0-9]+]] return: ; preds = %entry, %if.then %retval.0 = phi i32 [ 1, %if.then ], [ 0, %entry ] diff --git a/test/Transforms/InstCombine/fprintf-1.ll b/test/Transforms/InstCombine/fprintf-1.ll index 32203b2..6d21f39 100644 --- a/test/Transforms/InstCombine/fprintf-1.ll +++ b/test/Transforms/InstCombine/fprintf-1.ll @@ -20,7 +20,7 @@ declare i32 @fprintf(%FILE*, i8*, ...) define void @test_simplify1(%FILE* %fp) { ; CHECK-LABEL: @test_simplify1( %fmt = getelementptr [13 x i8], [13 x i8]* @hello_world, i32 0, i32 0 - call i32 (%FILE*, i8*, ...)* @fprintf(%FILE* %fp, i8* %fmt) + call i32 (%FILE*, i8*, ...) @fprintf(%FILE* %fp, i8* %fmt) ; CHECK-NEXT: call i32 @fwrite(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @hello_world, i32 0, i32 0), i32 12, i32 1, %FILE* %fp) ret void ; CHECK-NEXT: ret void @@ -31,7 +31,7 @@ define void @test_simplify1(%FILE* %fp) { define void @test_simplify2(%FILE* %fp) { ; CHECK-LABEL: @test_simplify2( %fmt = getelementptr [3 x i8], [3 x i8]* @percent_c, i32 0, i32 0 - call i32 (%FILE*, i8*, ...)* @fprintf(%FILE* %fp, i8* %fmt, i8 104) + call i32 (%FILE*, i8*, ...) @fprintf(%FILE* %fp, i8* %fmt, i8 104) ; CHECK-NEXT: call i32 @fputc(i32 104, %FILE* %fp) ret void ; CHECK-NEXT: ret void @@ -44,7 +44,7 @@ define void @test_simplify3(%FILE* %fp) { ; CHECK-LABEL: @test_simplify3( %fmt = getelementptr [3 x i8], [3 x i8]* @percent_s, i32 0, i32 0 %str = getelementptr [13 x i8], [13 x i8]* @hello_world, i32 0, i32 0 - call i32 (%FILE*, i8*, ...)* @fprintf(%FILE* %fp, i8* %fmt, i8* %str) + call i32 (%FILE*, i8*, ...) @fprintf(%FILE* %fp, i8* %fmt, i8* %str) ; CHECK-NEXT: call i32 @fwrite(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @hello_world, i32 0, i32 0), i32 12, i32 1, %FILE* %fp) ret void ; CHECK-NEXT: ret void @@ -55,8 +55,8 @@ define void @test_simplify3(%FILE* %fp) { define void @test_simplify4(%FILE* %fp) { ; CHECK-IPRINTF-LABEL: @test_simplify4( %fmt = getelementptr [3 x i8], [3 x i8]* @percent_d, i32 0, i32 0 - call i32 (%FILE*, i8*, ...)* @fprintf(%FILE* %fp, i8* %fmt, i32 187) -; CHECK-IPRINTF-NEXT: call i32 (%FILE*, i8*, ...)* @fiprintf(%FILE* %fp, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @percent_d, i32 0, i32 0), i32 187) + call i32 (%FILE*, i8*, ...) @fprintf(%FILE* %fp, i8* %fmt, i32 187) +; CHECK-IPRINTF-NEXT: call i32 (%FILE*, i8*, ...) @fiprintf(%FILE* %fp, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @percent_d, i32 0, i32 0), i32 187) ret void ; CHECK-IPRINTF-NEXT: ret void } @@ -64,8 +64,8 @@ define void @test_simplify4(%FILE* %fp) { define void @test_no_simplify1(%FILE* %fp) { ; CHECK-IPRINTF-LABEL: @test_no_simplify1( %fmt = getelementptr [3 x i8], [3 x i8]* @percent_f, i32 0, i32 0 - call i32 (%FILE*, i8*, ...)* @fprintf(%FILE* %fp, i8* %fmt, double 1.87) -; CHECK-IPRINTF-NEXT: call i32 (%FILE*, i8*, ...)* @fprintf(%FILE* %fp, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @percent_f, i32 0, i32 0), double 1.870000e+00) + call i32 (%FILE*, i8*, ...) @fprintf(%FILE* %fp, i8* %fmt, double 1.87) +; CHECK-IPRINTF-NEXT: call i32 (%FILE*, i8*, ...) @fprintf(%FILE* %fp, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @percent_f, i32 0, i32 0), double 1.870000e+00) ret void ; CHECK-IPRINTF-NEXT: ret void } @@ -73,8 +73,8 @@ define void @test_no_simplify1(%FILE* %fp) { define void @test_no_simplify2(%FILE* %fp, double %d) { ; CHECK-LABEL: @test_no_simplify2( %fmt = getelementptr [3 x i8], [3 x i8]* @percent_f, i32 0, i32 0 - call i32 (%FILE*, i8*, ...)* @fprintf(%FILE* %fp, i8* %fmt, double %d) -; CHECK-NEXT: call i32 (%FILE*, i8*, ...)* @fprintf(%FILE* %fp, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @percent_f, i32 0, i32 0), double %d) + call i32 (%FILE*, i8*, ...) @fprintf(%FILE* %fp, i8* %fmt, double %d) +; CHECK-NEXT: call i32 (%FILE*, i8*, ...) @fprintf(%FILE* %fp, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @percent_f, i32 0, i32 0), double %d) ret void ; CHECK-NEXT: ret void } @@ -82,8 +82,8 @@ define void @test_no_simplify2(%FILE* %fp, double %d) { define i32 @test_no_simplify3(%FILE* %fp) { ; CHECK-LABEL: @test_no_simplify3( %fmt = getelementptr [13 x i8], [13 x i8]* @hello_world, i32 0, i32 0 - %1 = call i32 (%FILE*, i8*, ...)* @fprintf(%FILE* %fp, i8* %fmt) -; CHECK-NEXT: call i32 (%FILE*, i8*, ...)* @fprintf(%FILE* %fp, i8* getelementptr inbounds ([13 x i8], [13 x i8]* @hello_world, i32 0, i32 0)) + %1 = call i32 (%FILE*, i8*, ...) @fprintf(%FILE* %fp, i8* %fmt) +; CHECK-NEXT: call i32 (%FILE*, i8*, ...) @fprintf(%FILE* %fp, i8* getelementptr inbounds ([13 x i8], [13 x i8]* @hello_world, i32 0, i32 0)) ret i32 %1 ; CHECK-NEXT: ret i32 %1 } diff --git a/test/Transforms/InstCombine/gc.relocate.ll b/test/Transforms/InstCombine/gc.relocate.ll index 4a7ea2c..5ecde19 100644 --- a/test/Transforms/InstCombine/gc.relocate.ll +++ b/test/Transforms/InstCombine/gc.relocate.ll @@ -9,13 +9,13 @@ declare zeroext i1 @return_i1() declare i32 @llvm.experimental.gc.statepoint.p0f_i1f(i1 ()*, i32, i32, ...) declare i32 addrspace(1)* @llvm.experimental.gc.relocate.p1i32(i32, i32, i32) -define i32 addrspace(1)* @deref(i32 addrspace(1)* dereferenceable(8) %dparam) { +define i32 addrspace(1)* @deref(i32 addrspace(1)* dereferenceable(8) %dparam) gc "statepoint-example" { ; Checks that a dereferenceabler pointer ; CHECK-LABEL: @deref ; CHECK: call dereferenceable(8) entry: %load = load i32, i32 addrspace(1)* %dparam - %tok = tail call i32 (i1 ()*, i32, i32, ...)* @llvm.experimental.gc.statepoint.p0f_i1f(i1 ()* @return_i1, i32 0, i32 0, i32 0, i32 addrspace(1)* %dparam) + %tok = tail call i32 (i1 ()*, i32, i32, ...) @llvm.experimental.gc.statepoint.p0f_i1f(i1 ()* @return_i1, i32 0, i32 0, i32 0, i32 addrspace(1)* %dparam) %relocate = call i32 addrspace(1)* @llvm.experimental.gc.relocate.p1i32(i32 %tok, i32 4, i32 4) ret i32 addrspace(1)* %relocate -}
\ No newline at end of file +} diff --git a/test/Transforms/InstCombine/getelementptr.ll b/test/Transforms/InstCombine/getelementptr.ll index 2e605fb..9bb1b12 100644 --- a/test/Transforms/InstCombine/getelementptr.ll +++ b/test/Transforms/InstCombine/getelementptr.ll @@ -460,7 +460,7 @@ bb10: %tmp.0.reg2mem.0.rec = mul i32 %indvar, -1 %tmp12.rec = add i32 %tmp.0.reg2mem.0.rec, -1 %tmp12 = getelementptr inbounds %struct.x, %struct.x* %tmp45, i32 %tmp12.rec - %tmp16 = call i32 (i8*, ...)* @printf( i8* getelementptr ([12 x i8], [12 x i8]* @.str1, i32 0, i32 0), %struct.x* %tmp12 ) nounwind + %tmp16 = call i32 (i8*, ...) @printf( i8* getelementptr ([12 x i8], [12 x i8]* @.str1, i32 0, i32 0), %struct.x* %tmp12 ) nounwind %tmp84 = icmp eq %struct.x* %tmp12, %orientations62 %indvar.next = add i32 %indvar, 1 br i1 %tmp84, label %bb17, label %bb10 @@ -617,11 +617,11 @@ entry: ; Instcombine should be able to fold this getelementptr. define i32 @test35() nounwind { - call i32 (i8*, ...)* @printf(i8* getelementptr ([17 x i8], [17 x i8]* @"\01LC8", i32 0, i32 0), + call i32 (i8*, ...) @printf(i8* getelementptr ([17 x i8], [17 x i8]* @"\01LC8", i32 0, i32 0), i8* getelementptr (%t1, %t1* bitcast (%t0* @s to %t1*), i32 0, i32 1, i32 0)) nounwind ret i32 0 ; CHECK-LABEL: @test35( -; CHECK: call i32 (i8*, ...)* @printf(i8* getelementptr inbounds ([17 x i8], [17 x i8]* @"\01LC8", i64 0, i64 0), i8* getelementptr inbounds (%t0, %t0* @s, i64 0, i32 1, i64 0)) [[NUW:#[0-9]+]] +; CHECK: call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([17 x i8], [17 x i8]* @"\01LC8", i64 0, i64 0), i8* getelementptr inbounds (%t0, %t0* @s, i64 0, i32 1, i64 0)) [[NUW:#[0-9]+]] } ; Instcombine should constant-fold the GEP so that indices that have diff --git a/test/Transforms/InstCombine/intrinsics.ll b/test/Transforms/InstCombine/intrinsics.ll index 539628a..f9ccf51 100644 --- a/test/Transforms/InstCombine/intrinsics.ll +++ b/test/Transforms/InstCombine/intrinsics.ll @@ -407,3 +407,13 @@ entry: %obit = extractvalue %ov.result.32 %t, 1 ret i1 %obit } + +define %ov.result.32 @ssubtest_reorder(i8 %a) { + %A = sext i8 %a to i32 + %x = call %ov.result.32 @llvm.ssub.with.overflow.i32(i32 0, i32 %A) + ret %ov.result.32 %x +; CHECK-LABEL: @ssubtest_reorder +; CHECK: %x = sub nsw i32 0, %A +; CHECK-NEXT: %1 = insertvalue %ov.result.32 { i32 undef, i1 false }, i32 %x, 0 +; CHECK-NEXT: ret %ov.result.32 %1 +} diff --git a/test/Transforms/InstCombine/objsize-noverify.ll b/test/Transforms/InstCombine/objsize-noverify.ll new file mode 100644 index 0000000..7e469bd --- /dev/null +++ b/test/Transforms/InstCombine/objsize-noverify.ll @@ -0,0 +1,43 @@ +; Test objectsize bounds checking that won't verify until after -instcombine. +; RUN: opt < %s -disable-verify -instcombine -S | opt -S | FileCheck %s +; We need target data to get the sizes of the arrays and structures. +target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:128:128" + +declare i32 @llvm.objectsize.i32.p0i8(i8*, i1) nounwind readonly + +; CHECK-LABEL: @PR13390( +define i32 @PR13390(i1 %bool, i8* %a) { +entry: + %cond = or i1 %bool, true + br i1 %cond, label %return, label %xpto + +xpto: + %select = select i1 %bool, i8* %select, i8* %a + %select2 = select i1 %bool, i8* %a, i8* %select2 + %0 = tail call i32 @llvm.objectsize.i32.p0i8(i8* %select, i1 true) + %1 = tail call i32 @llvm.objectsize.i32.p0i8(i8* %select2, i1 true) + %2 = add i32 %0, %1 +; CHECK: ret i32 undef + ret i32 %2 + +return: + ret i32 42 +} + +; CHECK-LABEL: @PR13621( +define i32 @PR13621(i1 %bool) nounwind { +entry: + %cond = or i1 %bool, true + br i1 %cond, label %return, label %xpto + +; technically reachable, but this malformed IR may appear as a result of constant propagation +xpto: + %gep2 = getelementptr i8, i8* %gep, i32 1 + %gep = getelementptr i8, i8* %gep2, i32 1 + %o = call i32 @llvm.objectsize.i32.p0i8(i8* %gep, i1 true) +; CHECK: ret i32 undef + ret i32 %o + +return: + ret i32 7 +} diff --git a/test/Transforms/InstCombine/objsize.ll b/test/Transforms/InstCombine/objsize.ll index 3125458..335a816 100644 --- a/test/Transforms/InstCombine/objsize.ll +++ b/test/Transforms/InstCombine/objsize.ll @@ -219,43 +219,6 @@ define i32 @test13(i8** %esc) { ret i32 %1 } -; CHECK-LABEL: @PR13390( -define i32 @PR13390(i1 %bool, i8* %a) { -entry: - %cond = or i1 %bool, true - br i1 %cond, label %return, label %xpto - -xpto: - %select = select i1 %bool, i8* %select, i8* %a - %select2 = select i1 %bool, i8* %a, i8* %select2 - %0 = tail call i32 @llvm.objectsize.i32.p0i8(i8* %select, i1 true) - %1 = tail call i32 @llvm.objectsize.i32.p0i8(i8* %select2, i1 true) - %2 = add i32 %0, %1 -; CHECK: ret i32 undef - ret i32 %2 - -return: - ret i32 42 -} - -; CHECK-LABEL: @PR13621( -define i32 @PR13621(i1 %bool) nounwind { -entry: - %cond = or i1 %bool, true - br i1 %cond, label %return, label %xpto - -; technically reachable, but this malformed IR may appear as a result of constant propagation -xpto: - %gep2 = getelementptr i8, i8* %gep, i32 1 - %gep = getelementptr i8, i8* %gep2, i32 1 - %o = call i32 @llvm.objectsize.i32.p0i8(i8* %gep, i1 true) -; CHECK: ret i32 undef - ret i32 %o - -return: - ret i32 7 -} - @globalalias = internal alias [60 x i8]* @a ; CHECK-LABEL: @test18( diff --git a/test/Transforms/InstCombine/osx-names.ll b/test/Transforms/InstCombine/osx-names.ll index ed379c5..04d842d 100644 --- a/test/Transforms/InstCombine/osx-names.ll +++ b/test/Transforms/InstCombine/osx-names.ll @@ -16,14 +16,14 @@ target triple = "i386-apple-macosx10.7.2" define void @test1(%struct.__sFILE* %stream) nounwind { ; CHECK-LABEL: define void @test1( ; CHECK: call i32 @"fwrite$UNIX2003" - %call = tail call i32 (%struct.__sFILE*, i8*, ...)* @fprintf(%struct.__sFILE* %stream, i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str, i32 0, i32 0)) nounwind + %call = tail call i32 (%struct.__sFILE*, i8*, ...) @fprintf(%struct.__sFILE* %stream, i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str, i32 0, i32 0)) nounwind ret void } define void @test2(%struct.__sFILE* %stream, i8* %str) nounwind ssp { ; CHECK-LABEL: define void @test2( ; CHECK: call i32 @"fputs$UNIX2003" - %call = tail call i32 (%struct.__sFILE*, i8*, ...)* @fprintf(%struct.__sFILE* %stream, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str2, i32 0, i32 0), i8* %str) nounwind + %call = tail call i32 (%struct.__sFILE*, i8*, ...) @fprintf(%struct.__sFILE* %stream, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str2, i32 0, i32 0), i8* %str) nounwind ret void } diff --git a/test/Transforms/InstCombine/overflow.ll b/test/Transforms/InstCombine/overflow.ll index 3eddc80..4c0a8a2 100644 --- a/test/Transforms/InstCombine/overflow.ll +++ b/test/Transforms/InstCombine/overflow.ll @@ -97,39 +97,6 @@ if.end: ; preds = %entry ; CHECK: ret i8 } -; CHECK-LABEL: @test5( -; CHECK: llvm.uadd.with.overflow -; CHECK: ret i64 -define i64 @test5(i64 %a, i64 %b) nounwind ssp { -entry: - %add = add i64 %b, %a - %cmp = icmp ult i64 %add, %a - %Q = select i1 %cmp, i64 %b, i64 42 - ret i64 %Q -} - -; CHECK-LABEL: @test6( -; CHECK: llvm.uadd.with.overflow -; CHECK: ret i64 -define i64 @test6(i64 %a, i64 %b) nounwind ssp { -entry: - %add = add i64 %b, %a - %cmp = icmp ult i64 %add, %b - %Q = select i1 %cmp, i64 %b, i64 42 - ret i64 %Q -} - -; CHECK-LABEL: @test7( -; CHECK: llvm.uadd.with.overflow -; CHECK: ret i64 -define i64 @test7(i64 %a, i64 %b) nounwind ssp { -entry: - %add = add i64 %b, %a - %cmp = icmp ugt i64 %b, %add - %Q = select i1 %cmp, i64 %b, i64 42 - ret i64 %Q -} - ; CHECK-LABEL: @test8( ; PR11438 ; This is @test1, but the operands are not sign-extended. Make sure diff --git a/test/Transforms/InstCombine/pr2996.ll b/test/Transforms/InstCombine/pr2996.ll index ff3245d..f5e1df4 100644 --- a/test/Transforms/InstCombine/pr2996.ll +++ b/test/Transforms/InstCombine/pr2996.ll @@ -5,7 +5,7 @@ define void @func_53(i16 signext %p_56) nounwind { entry: %0 = icmp sgt i16 %p_56, -1 ; <i1> [#uses=1] %iftmp.0.0 = select i1 %0, i32 -1, i32 0 ; <i32> [#uses=1] - %1 = call i32 (...)* @func_4(i32 %iftmp.0.0) nounwind ; <i32> [#uses=0] + %1 = call i32 (...) @func_4(i32 %iftmp.0.0) nounwind ; <i32> [#uses=0] ret void } diff --git a/test/Transforms/InstCombine/pr8547.ll b/test/Transforms/InstCombine/pr8547.ll index f6b3374..6d74b40 100644 --- a/test/Transforms/InstCombine/pr8547.ll +++ b/test/Transforms/InstCombine/pr8547.ll @@ -21,6 +21,6 @@ for.cond: ; preds = %for.cond, %codeRepl br i1 %tobool, label %for.cond, label %codeRepl2 codeRepl2: ; preds = %for.cond - %call = call i32 (i8*, ...)* @printf(i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str, i64 0, i64 0), i32 %conv2) nounwind + %call = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str, i64 0, i64 0), i32 %conv2) nounwind ret i32 0 } diff --git a/test/Transforms/InstCombine/printf-1.ll b/test/Transforms/InstCombine/printf-1.ll index 3fe79ac..75e11ce 100644 --- a/test/Transforms/InstCombine/printf-1.ll +++ b/test/Transforms/InstCombine/printf-1.ll @@ -22,7 +22,7 @@ declare i32 @printf(i8*, ...) define void @test_simplify1() { ; CHECK-LABEL: @test_simplify1( %fmt = getelementptr [1 x i8], [1 x i8]* @empty, i32 0, i32 0 - call i32 (i8*, ...)* @printf(i8* %fmt) + call i32 (i8*, ...) @printf(i8* %fmt) ret void ; CHECK-NEXT: ret void } @@ -32,7 +32,7 @@ define void @test_simplify1() { define void @test_simplify2() { ; CHECK-LABEL: @test_simplify2( %fmt = getelementptr [2 x i8], [2 x i8]* @h, i32 0, i32 0 - call i32 (i8*, ...)* @printf(i8* %fmt) + call i32 (i8*, ...) @printf(i8* %fmt) ; CHECK-NEXT: call i32 @putchar(i32 104) ret void ; CHECK-NEXT: ret void @@ -41,7 +41,7 @@ define void @test_simplify2() { define void @test_simplify3() { ; CHECK-LABEL: @test_simplify3( %fmt = getelementptr [2 x i8], [2 x i8]* @percent, i32 0, i32 0 - call i32 (i8*, ...)* @printf(i8* %fmt) + call i32 (i8*, ...) @printf(i8* %fmt) ; CHECK-NEXT: call i32 @putchar(i32 37) ret void ; CHECK-NEXT: ret void @@ -52,7 +52,7 @@ define void @test_simplify3() { define void @test_simplify4() { ; CHECK-LABEL: @test_simplify4( %fmt = getelementptr [13 x i8], [13 x i8]* @hello_world, i32 0, i32 0 - call i32 (i8*, ...)* @printf(i8* %fmt) + call i32 (i8*, ...) @printf(i8* %fmt) ; CHECK-NEXT: call i32 @puts(i8* getelementptr inbounds ([12 x i8], [12 x i8]* [[STR]], i32 0, i32 0)) ret void ; CHECK-NEXT: ret void @@ -63,7 +63,7 @@ define void @test_simplify4() { define void @test_simplify5() { ; CHECK-LABEL: @test_simplify5( %fmt = getelementptr [3 x i8], [3 x i8]* @percent_c, i32 0, i32 0 - call i32 (i8*, ...)* @printf(i8* %fmt, i8 104) + call i32 (i8*, ...) @printf(i8* %fmt, i8 104) ; CHECK-NEXT: call i32 @putchar(i32 104) ret void ; CHECK-NEXT: ret void @@ -75,7 +75,7 @@ define void @test_simplify6() { ; CHECK-LABEL: @test_simplify6( %fmt = getelementptr [4 x i8], [4 x i8]* @percent_s, i32 0, i32 0 %str = getelementptr [13 x i8], [13 x i8]* @hello_world, i32 0, i32 0 - call i32 (i8*, ...)* @printf(i8* %fmt, i8* %str) + call i32 (i8*, ...) @printf(i8* %fmt, i8* %str) ; CHECK-NEXT: call i32 @puts(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @hello_world, i32 0, i32 0)) ret void ; CHECK-NEXT: ret void @@ -86,8 +86,8 @@ define void @test_simplify6() { define void @test_simplify7() { ; CHECK-IPRINTF-LABEL: @test_simplify7( %fmt = getelementptr [3 x i8], [3 x i8]* @percent_d, i32 0, i32 0 - call i32 (i8*, ...)* @printf(i8* %fmt, i32 187) -; CHECK-IPRINTF-NEXT: call i32 (i8*, ...)* @iprintf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @percent_d, i32 0, i32 0), i32 187) + call i32 (i8*, ...) @printf(i8* %fmt, i32 187) +; CHECK-IPRINTF-NEXT: call i32 (i8*, ...) @iprintf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @percent_d, i32 0, i32 0), i32 187) ret void ; CHECK-IPRINTF-NEXT: ret void } @@ -95,16 +95,16 @@ define void @test_simplify7() { define void @test_no_simplify1() { ; CHECK-IPRINTF-LABEL: @test_no_simplify1( %fmt = getelementptr [3 x i8], [3 x i8]* @percent_f, i32 0, i32 0 - call i32 (i8*, ...)* @printf(i8* %fmt, double 1.87) -; CHECK-IPRINTF-NEXT: call i32 (i8*, ...)* @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @percent_f, i32 0, i32 0), double 1.870000e+00) + call i32 (i8*, ...) @printf(i8* %fmt, double 1.87) +; CHECK-IPRINTF-NEXT: call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @percent_f, i32 0, i32 0), double 1.870000e+00) ret void ; CHECK-IPRINTF-NEXT: ret void } define void @test_no_simplify2(i8* %fmt, double %d) { ; CHECK-LABEL: @test_no_simplify2( - call i32 (i8*, ...)* @printf(i8* %fmt, double %d) -; CHECK-NEXT: call i32 (i8*, ...)* @printf(i8* %fmt, double %d) + call i32 (i8*, ...) @printf(i8* %fmt, double %d) +; CHECK-NEXT: call i32 (i8*, ...) @printf(i8* %fmt, double %d) ret void ; CHECK-NEXT: ret void } @@ -112,8 +112,8 @@ define void @test_no_simplify2(i8* %fmt, double %d) { define i32 @test_no_simplify3() { ; CHECK-LABEL: @test_no_simplify3( %fmt = getelementptr [2 x i8], [2 x i8]* @h, i32 0, i32 0 - %ret = call i32 (i8*, ...)* @printf(i8* %fmt) -; CHECK-NEXT: call i32 (i8*, ...)* @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @h, i32 0, i32 0)) + %ret = call i32 (i8*, ...) @printf(i8* %fmt) +; CHECK-NEXT: call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @h, i32 0, i32 0)) ret i32 %ret ; CHECK-NEXT: ret i32 %ret } diff --git a/test/Transforms/InstCombine/printf-2.ll b/test/Transforms/InstCombine/printf-2.ll index d685824..d676985 100644 --- a/test/Transforms/InstCombine/printf-2.ll +++ b/test/Transforms/InstCombine/printf-2.ll @@ -15,7 +15,7 @@ declare void @printf(i8*, ...) define void @test_simplify1() { ; CHECK-LABEL: @test_simplify1( %fmt = getelementptr [2 x i8], [2 x i8]* @h, i32 0, i32 0 - call void (i8*, ...)* @printf(i8* %fmt) + call void (i8*, ...) @printf(i8* %fmt) ; CHECK-NEXT: call i32 @putchar(i32 104) ret void ; CHECK-NEXT: ret void @@ -24,7 +24,7 @@ define void @test_simplify1() { define void @test_simplify2() { ; CHECK-LABEL: @test_simplify2( %fmt = getelementptr [13 x i8], [13 x i8]* @hello_world, i32 0, i32 0 - call void (i8*, ...)* @printf(i8* %fmt) + call void (i8*, ...) @printf(i8* %fmt) ; CHECK-NEXT: call i32 @puts(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @str, i32 0, i32 0)) ret void ; CHECK-NEXT: ret void @@ -34,7 +34,7 @@ define void @test_simplify6() { ; CHECK-LABEL: @test_simplify6( %fmt = getelementptr [4 x i8], [4 x i8]* @percent_s, i32 0, i32 0 %str = getelementptr [13 x i8], [13 x i8]* @hello_world, i32 0, i32 0 - call void (i8*, ...)* @printf(i8* %fmt, i8* %str) + call void (i8*, ...) @printf(i8* %fmt, i8* %str) ; CHECK-NEXT: call i32 @puts(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @hello_world, i32 0, i32 0)) ret void ; CHECK-NEXT: ret void diff --git a/test/Transforms/InstCombine/select-crash-noverify.ll b/test/Transforms/InstCombine/select-crash-noverify.ll new file mode 100644 index 0000000..4a366aa --- /dev/null +++ b/test/Transforms/InstCombine/select-crash-noverify.ll @@ -0,0 +1,19 @@ +; RUN: opt < %s -disable-verify -instcombine -S | opt -S | FileCheck %s +; Formerly crashed, PR8490. + +; CHECK-LABEL: @test3( +define i32 @test3(i1 %bool, i32 %a) { +entry: + %cond = or i1 %bool, true + br i1 %cond, label %return, label %xpto + +; technically reachable, but this malformed IR may appear as a result of constant propagation +xpto: + %select = select i1 %bool, i32 %a, i32 %select + %select2 = select i1 %bool, i32 %select2, i32 %a + %sum = add i32 %select, %select2 + ret i32 %sum + +return: + ret i32 7 +} diff --git a/test/Transforms/InstCombine/select-crash.ll b/test/Transforms/InstCombine/select-crash.ll index 77446cd..991635b 100644 --- a/test/Transforms/InstCombine/select-crash.ll +++ b/test/Transforms/InstCombine/select-crash.ll @@ -30,20 +30,3 @@ define <4 x float> @foo(i1 %b, <4 x float> %x, <4 x float> %y, <4 x float> %z) { %sel = select i1 %b, <4 x float> %a, <4 x float> %sub ret <4 x float> %sel } - -; CHECK-LABEL: @test3( -define i32 @test3(i1 %bool, i32 %a) { -entry: - %cond = or i1 %bool, true - br i1 %cond, label %return, label %xpto - -; technically reachable, but this malformed IR may appear as a result of constant propagation -xpto: - %select = select i1 %bool, i32 %a, i32 %select - %select2 = select i1 %bool, i32 %select2, i32 %a - %sum = add i32 %select, %select2 - ret i32 %sum - -return: - ret i32 7 -} diff --git a/test/Transforms/InstCombine/select.ll b/test/Transforms/InstCombine/select.ll index e4cc6f5..ef122c9 100644 --- a/test/Transforms/InstCombine/select.ll +++ b/test/Transforms/InstCombine/select.ll @@ -423,11 +423,11 @@ jump: %c = or i1 false, false br label %ret ret: - %a = phi i1 [true, %jump], [%c, %entry] - %b = select i1 %a, i32 10, i32 20 + %a = phi i1 [true, %entry], [%c, %jump] + %b = select i1 %a, i32 20, i32 10 ret i32 %b ; CHECK-LABEL: @test26( -; CHECK: %a = phi i32 [ 10, %jump ], [ 20, %entry ] +; CHECK: %a = phi i32 [ 20, %entry ], [ 10, %jump ] ; CHECK-NEXT: ret i32 %a } diff --git a/test/Transforms/InstCombine/simplify-libcalls.ll b/test/Transforms/InstCombine/simplify-libcalls.ll index c569cdd..7cc6710 100644 --- a/test/Transforms/InstCombine/simplify-libcalls.ll +++ b/test/Transforms/InstCombine/simplify-libcalls.ll @@ -6,7 +6,7 @@ target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f3 declare i32 @sprintf(i8*, i8*, ...) define void @foo(i8* %P, i32* %X) { - call i32 (i8*, i8*, ...)* @sprintf( i8* %P, i8* getelementptr ([3 x i8], [3 x i8]* @G, i32 0, i32 0), i32* %X ) ; <i32>:1 [#uses=0] + call i32 (i8*, i8*, ...) @sprintf( i8* %P, i8* getelementptr ([3 x i8], [3 x i8]* @G, i32 0, i32 0), i32* %X ) ; <i32>:1 [#uses=0] ret void } diff --git a/test/Transforms/InstCombine/sprintf-1.ll b/test/Transforms/InstCombine/sprintf-1.ll index ec188c6..ddf2f2f 100644 --- a/test/Transforms/InstCombine/sprintf-1.ll +++ b/test/Transforms/InstCombine/sprintf-1.ll @@ -21,7 +21,7 @@ declare i32 @sprintf(i8*, i8*, ...) define void @test_simplify1(i8* %dst) { ; CHECK-LABEL: @test_simplify1( %fmt = getelementptr [13 x i8], [13 x i8]* @hello_world, i32 0, i32 0 - call i32 (i8*, i8*, ...)* @sprintf(i8* %dst, i8* %fmt) + call i32 (i8*, i8*, ...) @sprintf(i8* %dst, i8* %fmt) ; CHECK-NEXT: call void @llvm.memcpy.p0i8.p0i8.i32(i8* %dst, i8* getelementptr inbounds ([13 x i8], [13 x i8]* @hello_world, i32 0, i32 0), i32 13, i32 1, i1 false) ret void ; CHECK-NEXT: ret void @@ -30,7 +30,7 @@ define void @test_simplify1(i8* %dst) { define void @test_simplify2(i8* %dst) { ; CHECK-LABEL: @test_simplify2( %fmt = getelementptr [1 x i8], [1 x i8]* @null, i32 0, i32 0 - call i32 (i8*, i8*, ...)* @sprintf(i8* %dst, i8* %fmt) + call i32 (i8*, i8*, ...) @sprintf(i8* %dst, i8* %fmt) ; CHECK-NEXT: store i8 0, i8* %dst, align 1 ret void ; CHECK-NEXT: ret void @@ -39,7 +39,7 @@ define void @test_simplify2(i8* %dst) { define void @test_simplify3(i8* %dst) { ; CHECK-LABEL: @test_simplify3( %fmt = getelementptr [7 x i8], [7 x i8]* @null_hello, i32 0, i32 0 - call i32 (i8*, i8*, ...)* @sprintf(i8* %dst, i8* %fmt) + call i32 (i8*, i8*, ...) @sprintf(i8* %dst, i8* %fmt) ; CHECK-NEXT: store i8 0, i8* %dst, align 1 ret void ; CHECK-NEXT: ret void @@ -50,7 +50,7 @@ define void @test_simplify3(i8* %dst) { define void @test_simplify4(i8* %dst) { ; CHECK-LABEL: @test_simplify4( %fmt = getelementptr [3 x i8], [3 x i8]* @percent_c, i32 0, i32 0 - call i32 (i8*, i8*, ...)* @sprintf(i8* %dst, i8* %fmt, i8 104) + call i32 (i8*, i8*, ...) @sprintf(i8* %dst, i8* %fmt, i8 104) ; CHECK-NEXT: store i8 104, i8* %dst, align 1 ; CHECK-NEXT: [[NUL:%[a-z0-9]+]] = getelementptr i8, i8* %dst, i32 1 ; CHECK-NEXT: store i8 0, i8* [[NUL]], align 1 @@ -63,7 +63,7 @@ define void @test_simplify4(i8* %dst) { define void @test_simplify5(i8* %dst, i8* %str) { ; CHECK-LABEL: @test_simplify5( %fmt = getelementptr [3 x i8], [3 x i8]* @percent_s, i32 0, i32 0 - call i32 (i8*, i8*, ...)* @sprintf(i8* %dst, i8* %fmt, i8* %str) + call i32 (i8*, i8*, ...) @sprintf(i8* %dst, i8* %fmt, i8* %str) ; CHECK-NEXT: [[STRLEN:%[a-z0-9]+]] = call i32 @strlen(i8* %str) ; CHECK-NEXT: [[LENINC:%[a-z0-9]+]] = add i32 [[STRLEN]], 1 ; CHECK-NEXT: call void @llvm.memcpy.p0i8.p0i8.i32(i8* %dst, i8* %str, i32 [[LENINC]], i32 1, i1 false) @@ -76,8 +76,8 @@ define void @test_simplify5(i8* %dst, i8* %str) { define void @test_simplify6(i8* %dst) { ; CHECK-IPRINTF-LABEL: @test_simplify6( %fmt = getelementptr [3 x i8], [3 x i8]* @percent_d, i32 0, i32 0 - call i32 (i8*, i8*, ...)* @sprintf(i8* %dst, i8* %fmt, i32 187) -; CHECK-IPRINTF-NEXT: call i32 (i8*, i8*, ...)* @siprintf(i8* %dst, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @percent_d, i32 0, i32 0), i32 187) + call i32 (i8*, i8*, ...) @sprintf(i8* %dst, i8* %fmt, i32 187) +; CHECK-IPRINTF-NEXT: call i32 (i8*, i8*, ...) @siprintf(i8* %dst, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @percent_d, i32 0, i32 0), i32 187) ret void ; CHECK-IPRINTF-NEXT: ret void } @@ -85,16 +85,16 @@ define void @test_simplify6(i8* %dst) { define void @test_no_simplify1(i8* %dst) { ; CHECK-IPRINTF-LABEL: @test_no_simplify1( %fmt = getelementptr [3 x i8], [3 x i8]* @percent_f, i32 0, i32 0 - call i32 (i8*, i8*, ...)* @sprintf(i8* %dst, i8* %fmt, double 1.87) -; CHECK-IPRINTF-NEXT: call i32 (i8*, i8*, ...)* @sprintf(i8* %dst, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @percent_f, i32 0, i32 0), double 1.870000e+00) + call i32 (i8*, i8*, ...) @sprintf(i8* %dst, i8* %fmt, double 1.87) +; CHECK-IPRINTF-NEXT: call i32 (i8*, i8*, ...) @sprintf(i8* %dst, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @percent_f, i32 0, i32 0), double 1.870000e+00) ret void ; CHECK-IPRINTF-NEXT: ret void } define void @test_no_simplify2(i8* %dst, i8* %fmt, double %d) { ; CHECK-LABEL: @test_no_simplify2( - call i32 (i8*, i8*, ...)* @sprintf(i8* %dst, i8* %fmt, double %d) -; CHECK-NEXT: call i32 (i8*, i8*, ...)* @sprintf(i8* %dst, i8* %fmt, double %d) + call i32 (i8*, i8*, ...) @sprintf(i8* %dst, i8* %fmt, double %d) +; CHECK-NEXT: call i32 (i8*, i8*, ...) @sprintf(i8* %dst, i8* %fmt, double %d) ret void ; CHECK-NEXT: ret void } diff --git a/test/Transforms/InstCombine/sqrt.ll b/test/Transforms/InstCombine/sqrt.ll index 24c2e00..bf44e4f 100644 --- a/test/Transforms/InstCombine/sqrt.ll +++ b/test/Transforms/InstCombine/sqrt.ll @@ -44,7 +44,7 @@ entry: %add19 = fadd float undef, %mul18 %conv = fpext float %add19 to double %call34 = call double @sqrt(double %conv) readnone - %call36 = call i32 (double)* @foo(double %call34) nounwind + %call36 = call i32 (double) @foo(double %call34) nounwind %conv38 = fptrunc double %call34 to float ret float %conv38 } diff --git a/test/Transforms/InstCombine/srem1.ll b/test/Transforms/InstCombine/srem1.ll index f18690c..31452d8 100644 --- a/test/Transforms/InstCombine/srem1.ll +++ b/test/Transforms/InstCombine/srem1.ll @@ -5,7 +5,7 @@ define i32 @func_56(i32 %p_58, i32 %p_59, i32 %p_61, i16 signext %p_62) nounwind { entry: - %call = call i32 (...)* @rshift_s_s( i32 %p_61, i32 1 ) ; <i32> [#uses=1] + %call = call i32 (...) @rshift_s_s( i32 %p_61, i32 1 ) ; <i32> [#uses=1] %conv = sext i32 %call to i64 ; <i64> [#uses=1] %or = or i64 -1734012817166602727, %conv ; <i64> [#uses=1] %rem = srem i64 %or, 1 ; <i64> [#uses=1] diff --git a/test/Transforms/InstCombine/statepoint.ll b/test/Transforms/InstCombine/statepoint.ll index bee219d..ec99117 100644 --- a/test/Transforms/InstCombine/statepoint.ll +++ b/test/Transforms/InstCombine/statepoint.ll @@ -5,9 +5,9 @@ declare void @func() -define i1 @test_negative(i32 addrspace(1)* %p) { +define i1 @test_negative(i32 addrspace(1)* %p) gc "statepoint-example" { entry: - %safepoint_token = tail call i32 (void ()*, i32, i32, ...)* @llvm.experimental.gc.statepoint.p0f_isVoidf(void ()* @func, i32 0, i32 0, i32 0, i32 addrspace(1)* %p) + %safepoint_token = tail call i32 (void ()*, i32, i32, ...) @llvm.experimental.gc.statepoint.p0f_isVoidf(void ()* @func, i32 0, i32 0, i32 0, i32 addrspace(1)* %p) %pnew = call i32 addrspace(1)* @llvm.experimental.gc.relocate.p1i32(i32 %safepoint_token, i32 4, i32 4) %cmp = icmp eq i32 addrspace(1)* %pnew, null ret i1 %cmp @@ -16,9 +16,9 @@ entry: ; CHECK: ret i1 %cmp } -define i1 @test_nonnull(i32 addrspace(1)* nonnull %p) { +define i1 @test_nonnull(i32 addrspace(1)* nonnull %p) gc "statepoint-example" { entry: - %safepoint_token = tail call i32 (void ()*, i32, i32, ...)* @llvm.experimental.gc.statepoint.p0f_isVoidf(void ()* @func, i32 0, i32 0, i32 0, i32 addrspace(1)* %p) + %safepoint_token = tail call i32 (void ()*, i32, i32, ...) @llvm.experimental.gc.statepoint.p0f_isVoidf(void ()* @func, i32 0, i32 0, i32 0, i32 addrspace(1)* %p) %pnew = call i32 addrspace(1)* @llvm.experimental.gc.relocate.p1i32(i32 %safepoint_token, i32 4, i32 4) %cmp = icmp eq i32 addrspace(1)* %pnew, null ret i1 %cmp @@ -26,9 +26,9 @@ entry: ; CHECK: ret i1 false } -define i1 @test_null() { +define i1 @test_null() gc "statepoint-example" { entry: - %safepoint_token = tail call i32 (void ()*, i32, i32, ...)* @llvm.experimental.gc.statepoint.p0f_isVoidf(void ()* @func, i32 0, i32 0, i32 0, i32 addrspace(1)* null) + %safepoint_token = tail call i32 (void ()*, i32, i32, ...) @llvm.experimental.gc.statepoint.p0f_isVoidf(void ()* @func, i32 0, i32 0, i32 0, i32 addrspace(1)* null) %pnew = call i32 addrspace(1)* @llvm.experimental.gc.relocate.p1i32(i32 %safepoint_token, i32 4, i32 4) %cmp = icmp eq i32 addrspace(1)* %pnew, null ret i1 %cmp @@ -37,9 +37,9 @@ entry: ; CHECK: ret i1 true } -define i1 @test_undef() { +define i1 @test_undef() gc "statepoint-example" { entry: - %safepoint_token = tail call i32 (void ()*, i32, i32, ...)* @llvm.experimental.gc.statepoint.p0f_isVoidf(void ()* @func, i32 0, i32 0, i32 0, i32 addrspace(1)* undef) + %safepoint_token = tail call i32 (void ()*, i32, i32, ...) @llvm.experimental.gc.statepoint.p0f_isVoidf(void ()* @func, i32 0, i32 0, i32 0, i32 addrspace(1)* undef) %pnew = call i32 addrspace(1)* @llvm.experimental.gc.relocate.p1i32(i32 %safepoint_token, i32 4, i32 4) %cmp = icmp eq i32 addrspace(1)* %pnew, null ret i1 %cmp diff --git a/test/Transforms/InstCombine/urem-simplify-bug.ll b/test/Transforms/InstCombine/urem-simplify-bug.ll index 6dd27e9..1220dfd 100644 --- a/test/Transforms/InstCombine/urem-simplify-bug.ll +++ b/test/Transforms/InstCombine/urem-simplify-bug.ll @@ -23,7 +23,7 @@ bb14: ; preds = %entry bb15: ; preds = %bb14, %bb %iftmp.0.0 = phi i8* [ getelementptr ([5 x i8], [5 x i8]* @.str1, i32 0, i32 0), %bb14 ], [ getelementptr ([5 x i8], [5 x i8]* @.str, i32 0, i32 0), %bb ] ; <i8*> [#uses=1] - %tmp17 = call i32 (i8*, ...)* @printf( i8* %iftmp.0.0 ) nounwind ; <i32> [#uses=0] + %tmp17 = call i32 (i8*, ...) @printf( i8* %iftmp.0.0 ) nounwind ; <i32> [#uses=0] ret i32 0 } diff --git a/test/Transforms/InstCombine/vec_demanded_elts.ll b/test/Transforms/InstCombine/vec_demanded_elts.ll index 8a8b834..4245c7a 100644 --- a/test/Transforms/InstCombine/vec_demanded_elts.ll +++ b/test/Transforms/InstCombine/vec_demanded_elts.ll @@ -350,19 +350,19 @@ define <8 x float> @test_vpermilvar_ps_256(<8 x float> %v) { ret <8 x float> %a } -declare <2 x double> @llvm.x86.avx.vpermilvar.pd(<2 x double>, <2 x i32>) +declare <2 x double> @llvm.x86.avx.vpermilvar.pd(<2 x double>, <2 x i64>) define <2 x double> @test_vpermilvar_pd(<2 x double> %v) { ; CHECK-LABEL: @test_vpermilvar_pd( ; CHECK: shufflevector <2 x double> %v, <2 x double> undef, <2 x i32> <i32 1, i32 0> - %a = tail call <2 x double> @llvm.x86.avx.vpermilvar.pd(<2 x double> %v, <2 x i32> <i32 2, i32 0>) + %a = tail call <2 x double> @llvm.x86.avx.vpermilvar.pd(<2 x double> %v, <2 x i64> <i64 2, i64 0>) ret <2 x double> %a } -declare <4 x double> @llvm.x86.avx.vpermilvar.pd.256(<4 x double>, <4 x i32>) +declare <4 x double> @llvm.x86.avx.vpermilvar.pd.256(<4 x double>, <4 x i64>) define <4 x double> @test_vpermilvar_pd_256(<4 x double> %v) { ; CHECK-LABEL: @test_vpermilvar_pd_256( ; CHECK: shufflevector <4 x double> %v, <4 x double> undef, <4 x i32> <i32 1, i32 0, i32 3, i32 2> - %a = tail call <4 x double> @llvm.x86.avx.vpermilvar.pd.256(<4 x double> %v, <4 x i32> <i32 3, i32 1, i32 2, i32 0>) + %a = tail call <4 x double> @llvm.x86.avx.vpermilvar.pd.256(<4 x double> %v, <4 x i64> <i64 3, i64 1, i64 2, i64 0>) ret <4 x double> %a } @@ -383,14 +383,14 @@ define <8 x float> @test_vpermilvar_ps_256_zero(<8 x float> %v) { define <2 x double> @test_vpermilvar_pd_zero(<2 x double> %v) { ; CHECK-LABEL: @test_vpermilvar_pd_zero( ; CHECK: shufflevector <2 x double> %v, <2 x double> undef, <2 x i32> zeroinitializer - %a = tail call <2 x double> @llvm.x86.avx.vpermilvar.pd(<2 x double> %v, <2 x i32> zeroinitializer) + %a = tail call <2 x double> @llvm.x86.avx.vpermilvar.pd(<2 x double> %v, <2 x i64> zeroinitializer) ret <2 x double> %a } define <4 x double> @test_vpermilvar_pd_256_zero(<4 x double> %v) { ; CHECK-LABEL: @test_vpermilvar_pd_256_zero( ; CHECK: shufflevector <4 x double> %v, <4 x double> undef, <4 x i32> <i32 0, i32 0, i32 2, i32 2> - %a = tail call <4 x double> @llvm.x86.avx.vpermilvar.pd.256(<4 x double> %v, <4 x i32> zeroinitializer) + %a = tail call <4 x double> @llvm.x86.avx.vpermilvar.pd.256(<4 x double> %v, <4 x i64> zeroinitializer) ret <4 x double> %a } diff --git a/test/Transforms/InstCombine/vec_shuffle.ll b/test/Transforms/InstCombine/vec_shuffle.ll index 164e315..d4d7f16 100644 --- a/test/Transforms/InstCombine/vec_shuffle.ll +++ b/test/Transforms/InstCombine/vec_shuffle.ll @@ -414,3 +414,11 @@ define <4 x i32> @pr20114(<4 x i32> %__mask) { %masked_new.i.i.i = and <4 x i32> bitcast (<2 x i64> <i64 ptrtoint (<4 x i32> (<4 x i32>)* @pr20114 to i64), i64 ptrtoint (<4 x i32> (<4 x i32>)* @pr20114 to i64)> to <4 x i32>), %mask01.i ret <4 x i32> %masked_new.i.i.i } + +define <2 x i32*> @pr23113(<4 x i32*> %A) { +; CHECK-LABEL: @pr23113 +; CHECK: %[[V:.*]] = shufflevector <4 x i32*> %A, <4 x i32*> undef, <2 x i32> <i32 0, i32 1> +; CHECK-NEXT: ret <2 x i32*> %[[V]] + %1 = shufflevector <4 x i32*> %A, <4 x i32*> undef, <2 x i32> <i32 0, i32 1> + ret <2 x i32*> %1 +} diff --git a/test/Transforms/InstCombine/x86-insertps.ll b/test/Transforms/InstCombine/x86-insertps.ll new file mode 100644 index 0000000..487c727 --- /dev/null +++ b/test/Transforms/InstCombine/x86-insertps.ll @@ -0,0 +1,117 @@ +; RUN: opt < %s -instcombine -S | FileCheck %s + +declare <4 x float> @llvm.x86.sse41.insertps(<4 x float>, <4 x float>, i8) nounwind readnone + +; This should never happen, but make sure we don't crash handling a non-constant immediate byte. + +define <4 x float> @insertps_non_const_imm(<4 x float> %v1, <4 x float> %v2, i8 %c) { + %res = call <4 x float> @llvm.x86.sse41.insertps(<4 x float> %v1, <4 x float> %v2, i8 %c) + ret <4 x float> %res + +; CHECK-LABEL: @insertps_non_const_imm +; CHECK-NEXT: call <4 x float> @llvm.x86.sse41.insertps(<4 x float> %v1, <4 x float> %v2, i8 %c) +; CHECK-NEXT: ret <4 x float> +} + +; If all zero mask bits are set, return a zero regardless of the other control bits. + +define <4 x float> @insertps_0x0f(<4 x float> %v1, <4 x float> %v2) { + %res = call <4 x float> @llvm.x86.sse41.insertps(<4 x float> %v1, <4 x float> %v2, i8 15) + ret <4 x float> %res + +; CHECK-LABEL: @insertps_0x0f +; CHECK-NEXT: ret <4 x float> zeroinitializer +} +define <4 x float> @insertps_0xff(<4 x float> %v1, <4 x float> %v2) { + %res = call <4 x float> @llvm.x86.sse41.insertps(<4 x float> %v1, <4 x float> %v2, i8 255) + ret <4 x float> %res + +; CHECK-LABEL: @insertps_0xff +; CHECK-NEXT: ret <4 x float> zeroinitializer +} + +; If some zero mask bits are set, we do not change anything. + +define <4 x float> @insertps_0x03(<4 x float> %v1, <4 x float> %v2) { + %res = call <4 x float> @llvm.x86.sse41.insertps(<4 x float> %v1, <4 x float> %v2, i8 3) + ret <4 x float> %res + +; CHECK-LABEL: @insertps_0x03 +; CHECK-NEXT: call <4 x float> @llvm.x86.sse41.insertps(<4 x float> %v1, <4 x float> %v2, i8 3) +; CHECK-NEXT: ret <4 x float> +} + +; If no zero mask bits are set, convert to a shuffle. + +define <4 x float> @insertps_0x00(<4 x float> %v1, <4 x float> %v2) { + %res = call <4 x float> @llvm.x86.sse41.insertps(<4 x float> %v1, <4 x float> %v2, i8 0) + ret <4 x float> %res + +; CHECK-LABEL: @insertps_0x00 +; CHECK-NEXT: shufflevector <4 x float> %v1, <4 x float> %v2, <4 x i32> <i32 4, i32 1, i32 2, i32 3> +; CHECK-NEXT: ret <4 x float> +} + +define <4 x float> @insertps_0x10(<4 x float> %v1, <4 x float> %v2) { + %res = call <4 x float> @llvm.x86.sse41.insertps(<4 x float> %v1, <4 x float> %v2, i8 16) + ret <4 x float> %res + +; CHECK-LABEL: @insertps_0x10 +; CHECK-NEXT: shufflevector <4 x float> %v1, <4 x float> %v2, <4 x i32> <i32 0, i32 4, i32 2, i32 3> +; CHECK-NEXT: ret <4 x float> +} + +define <4 x float> @insertps_0x20(<4 x float> %v1, <4 x float> %v2) { + %res = call <4 x float> @llvm.x86.sse41.insertps(<4 x float> %v1, <4 x float> %v2, i8 32) + ret <4 x float> %res + +; CHECK-LABEL: @insertps_0x20 +; CHECK-NEXT: shufflevector <4 x float> %v1, <4 x float> %v2, <4 x i32> <i32 0, i32 1, i32 4, i32 3> +; CHECK-NEXT: ret <4 x float> +} + +define <4 x float> @insertps_0x30(<4 x float> %v1, <4 x float> %v2) { + %res = call <4 x float> @llvm.x86.sse41.insertps(<4 x float> %v1, <4 x float> %v2, i8 48) + ret <4 x float> %res + +; CHECK-LABEL: @insertps_0x30 +; CHECK-NEXT: shufflevector <4 x float> %v1, <4 x float> %v2, <4 x i32> <i32 0, i32 1, i32 2, i32 4> +; CHECK-NEXT: ret <4 x float> +} + +define <4 x float> @insertps_0xc0(<4 x float> %v1, <4 x float> %v2) { + %res = call <4 x float> @llvm.x86.sse41.insertps(<4 x float> %v1, <4 x float> %v2, i8 192) + ret <4 x float> %res + +; CHECK-LABEL: @insertps_0xc0 +; CHECK-NEXT: shufflevector <4 x float> %v1, <4 x float> %v2, <4 x i32> <i32 7, i32 1, i32 2, i32 3> +; CHECK-NEXT: ret <4 x float> +} + +define <4 x float> @insertps_0xd0(<4 x float> %v1, <4 x float> %v2) { + %res = call <4 x float> @llvm.x86.sse41.insertps(<4 x float> %v1, <4 x float> %v2, i8 208) + ret <4 x float> %res + +; CHECK-LABEL: @insertps_0xd0 +; CHECK-NEXT: shufflevector <4 x float> %v1, <4 x float> %v2, <4 x i32> <i32 0, i32 7, i32 2, i32 3> +; CHECK-NEXT: ret <4 x float> +} + +define <4 x float> @insertps_0xe0(<4 x float> %v1, <4 x float> %v2) { + %res = call <4 x float> @llvm.x86.sse41.insertps(<4 x float> %v1, <4 x float> %v2, i8 224) + ret <4 x float> %res + +; CHECK-LABEL: @insertps_0xe0 +; CHECK-NEXT: shufflevector <4 x float> %v1, <4 x float> %v2, <4 x i32> <i32 0, i32 1, i32 7, i32 3> +; CHECK-NEXT: ret <4 x float> +} + +define <4 x float> @insertps_0xf0(<4 x float> %v1, <4 x float> %v2) { + %res = call <4 x float> @llvm.x86.sse41.insertps(<4 x float> %v1, <4 x float> %v2, i8 240) + ret <4 x float> %res + +; CHECK-LABEL: @insertps_0xf0 +; CHECK-NEXT: shufflevector <4 x float> %v1, <4 x float> %v2, <4 x i32> <i32 0, i32 1, i32 2, i32 7> +; CHECK-NEXT: ret <4 x float> +} + |