<div dir="ltr">Thanks for spotting this! Fixed in r290953. I also looked for other permutations of the characters in the Inline tests and didn't find any other instances. (I did find some in other directories, but that's a separate issue....)</div><br><div class="gmail_quote"><div dir="ltr">On Tue, Jan 3, 2017 at 3:47 PM Bob Wilson <<a href="mailto:bob.wilson@apple.com">bob.wilson@apple.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">I happened to notice that there is a “CHCEK” typo in test/Transforms/Inline/inline-invoke-tail.ll.<br class="gmail_msg">
<br class="gmail_msg">
> On Dec 26, 2016, at 6:47 PM, Chandler Carruth via llvm-commits <<a href="mailto:llvm-commits@lists.llvm.org" class="gmail_msg" target="_blank">llvm-commits@lists.llvm.org</a>> wrote:<br class="gmail_msg">
><br class="gmail_msg">
> Author: chandlerc<br class="gmail_msg">
> Date: Mon Dec 26 20:47:37 2016<br class="gmail_msg">
> New Revision: 290570<br class="gmail_msg">
><br class="gmail_msg">
> URL: <a href="http://llvm.org/viewvc/llvm-project?rev=290570&view=rev" rel="noreferrer" class="gmail_msg" target="_blank">http://llvm.org/viewvc/llvm-project?rev=290570&view=rev</a><br class="gmail_msg">
> Log:<br class="gmail_msg">
> [Inliner] Modernize all of the inliner tests that were using grep.<br class="gmail_msg">
><br class="gmail_msg">
> This mostly involved converting from grep to FileCheck and tidying up<br class="gmail_msg">
> the IR used.<br class="gmail_msg">
><br class="gmail_msg">
> In one case (invoke_test-3.ll) the test had become completely pointless<br class="gmail_msg">
> as we use 'resume' rather than 'unwind' now, and even then it did not<br class="gmail_msg">
> occur at the end of the line.<br class="gmail_msg">
><br class="gmail_msg">
> Modified:<br class="gmail_msg">
>    llvm/trunk/test/Transforms/Inline/2007-04-15-InlineEH.ll<br class="gmail_msg">
>    llvm/trunk/test/Transforms/Inline/2007-06-25-WeakInline.ll<br class="gmail_msg">
>    llvm/trunk/test/Transforms/Inline/2007-12-19-InlineNoUnwind.ll<br class="gmail_msg">
>    llvm/trunk/test/Transforms/Inline/2008-09-02-NoInline.ll<br class="gmail_msg">
>    llvm/trunk/test/Transforms/Inline/2009-01-08-NoInlineDynamicAlloca.ll<br class="gmail_msg">
>    llvm/trunk/test/Transforms/Inline/casts.ll<br class="gmail_msg">
>    llvm/trunk/test/Transforms/Inline/cfg_preserve_test.ll<br class="gmail_msg">
>    llvm/trunk/test/Transforms/Inline/externally_available.ll<br class="gmail_msg">
>    llvm/trunk/test/Transforms/Inline/inline-invoke-tail.ll<br class="gmail_msg">
>    llvm/trunk/test/Transforms/Inline/inline_dce.ll<br class="gmail_msg">
>    llvm/trunk/test/Transforms/Inline/inline_prune.ll<br class="gmail_msg">
>    llvm/trunk/test/Transforms/Inline/invoke_test-1.ll<br class="gmail_msg">
>    llvm/trunk/test/Transforms/Inline/invoke_test-2.ll<br class="gmail_msg">
>    llvm/trunk/test/Transforms/Inline/invoke_test-3.ll<br class="gmail_msg">
><br class="gmail_msg">
> Modified: llvm/trunk/test/Transforms/Inline/2007-04-15-InlineEH.ll<br class="gmail_msg">
> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/Inline/2007-04-15-InlineEH.ll?rev=290570&r1=290569&r2=290570&view=diff" rel="noreferrer" class="gmail_msg" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/Inline/2007-04-15-InlineEH.ll?rev=290570&r1=290569&r2=290570&view=diff</a><br class="gmail_msg">
> ==============================================================================<br class="gmail_msg">
> --- llvm/trunk/test/Transforms/Inline/2007-04-15-InlineEH.ll (original)<br class="gmail_msg">
> +++ llvm/trunk/test/Transforms/Inline/2007-04-15-InlineEH.ll Mon Dec 26 20:47:37 2016<br class="gmail_msg">
> @@ -1,53 +1,68 @@<br class="gmail_msg">
> -; RUN: opt < %s -inline -S | not grep "invoke void asm"<br class="gmail_msg">
> +; RUN: opt < %s -inline -S | FileCheck %s<br class="gmail_msg">
> ; PR1335<br class="gmail_msg">
><br class="gmail_msg">
> -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"<br class="gmail_msg">
> target triple = "i686-pc-linux-gnu"<br class="gmail_msg">
> -     %struct.gnat__strings__string_access = type { i8*, %struct.string___XUB* }<br class="gmail_msg">
> -     %struct.string___XUB = type { i32, i32 }<br class="gmail_msg">
><br class="gmail_msg">
> -define void @bc__support__high_resolution_time__clock() {<br class="gmail_msg">
> -entry:<br class="gmail_msg">
> -     call void asm "rdtsc\0A\09movl %eax, $0\0A\09movl %edx, $1", "=*imr,=*imr,~{dirflag},~{fpsr},~{flags},~{dx},~{ax}"( i32* null, i32* null ) nounwind<br class="gmail_msg">
> -     unreachable<br class="gmail_msg">
> -}<br class="gmail_msg">
> -<br class="gmail_msg">
> -define fastcc void @bc__support__high_resolution_time__initialize_clock_rate() personality i32 (...)* @__gxx_personality_v0 {<br class="gmail_msg">
> -entry:<br class="gmail_msg">
> -     invoke void @gnat__os_lib__getenv( %struct.gnat__strings__string_access* null )<br class="gmail_msg">
> -                     to label %invcont unwind label %cleanup144<br class="gmail_msg">
> +declare i32 @__gxx_personality_v0(...)<br class="gmail_msg">
><br class="gmail_msg">
> -invcont:             ; preds = %entry<br class="gmail_msg">
> -     invoke void @ada__calendar__delays__delay_for( )<br class="gmail_msg">
> -                     to label %invcont64 unwind label %cleanup144<br class="gmail_msg">
> -<br class="gmail_msg">
> -invcont64:           ; preds = %invcont<br class="gmail_msg">
> -     invoke void @ada__calendar__clock( )<br class="gmail_msg">
> -                     to label %invcont65 unwind label %cleanup144<br class="gmail_msg">
> -<br class="gmail_msg">
> -invcont65:           ; preds = %invcont64<br class="gmail_msg">
> -     invoke void @bc__support__high_resolution_time__clock( )<br class="gmail_msg">
> -                     to label %invcont67 unwind label %cleanup144<br class="gmail_msg">
> -<br class="gmail_msg">
> -invcont67:           ; preds = %invcont65<br class="gmail_msg">
> -     ret void<br class="gmail_msg">
> -<br class="gmail_msg">
> -cleanup144:          ; preds = %invcont65, %invcont64, %invcont, %entry<br class="gmail_msg">
> -        %exn = landingpad {i8*, i32}<br class="gmail_msg">
> -                 cleanup<br class="gmail_msg">
> -     resume { i8*, i32 } %exn<br class="gmail_msg">
> -}<br class="gmail_msg">
> +declare void @a()<br class="gmail_msg">
><br class="gmail_msg">
> -declare i32 @__gxx_personality_v0(...)<br class="gmail_msg">
> +declare void @b()<br class="gmail_msg">
><br class="gmail_msg">
> -declare void @gnat__os_lib__getenv(%struct.gnat__strings__string_access*)<br class="gmail_msg">
> +declare void @c()<br class="gmail_msg">
><br class="gmail_msg">
> -declare void @ada__calendar__delays__delay_for()<br class="gmail_msg">
> +define void @f() {<br class="gmail_msg">
> +; CHECK-LABEL: define void @f()<br class="gmail_msg">
> +entry:<br class="gmail_msg">
> +  call void asm "rdtsc\0A\09movl %eax, $0\0A\09movl %edx, $1", "=*imr,=*imr,~{dirflag},~{fpsr},~{flags},~{dx},~{ax}"( i32* null, i32* null ) nounwind<br class="gmail_msg">
> +; CHECK: call void asm<br class="gmail_msg">
> +  unreachable<br class="gmail_msg">
> +}<br class="gmail_msg">
><br class="gmail_msg">
> -declare void @ada__calendar__clock()<br class="gmail_msg">
> +define void @g() personality i32 (...)* @__gxx_personality_v0 {<br class="gmail_msg">
> +; CHECK-LABEL: define void @g() personality i32 (...)* @__gxx_personality_v0<br class="gmail_msg">
> +entry:<br class="gmail_msg">
> +  invoke void @a() to label %invcont1 unwind label %cleanup<br class="gmail_msg">
> +; CHECK-NOT: {{call|invoke}}<br class="gmail_msg">
> +; CHECK: invoke void @a()<br class="gmail_msg">
> +<br class="gmail_msg">
> +invcont1:<br class="gmail_msg">
> +  invoke void @b() to label %invcont2 unwind label %cleanup<br class="gmail_msg">
> +; CHECK-NOT: {{call|invoke}}<br class="gmail_msg">
> +; CHECK: invoke void @b()<br class="gmail_msg">
> +<br class="gmail_msg">
> +invcont2:<br class="gmail_msg">
> +  invoke void @c() to label %invcont3 unwind label %cleanup<br class="gmail_msg">
> +; CHECK-NOT: {{call|invoke}}<br class="gmail_msg">
> +; CHECK: invoke void @c()<br class="gmail_msg">
> +<br class="gmail_msg">
> +invcont3:<br class="gmail_msg">
> +  invoke void @f() to label %invcont4 unwind label %cleanup<br class="gmail_msg">
> +; CHECK-NOT: {{call|invoke}}<br class="gmail_msg">
> +; CHECK: call void asm<br class="gmail_msg">
> +; CHECK-NOT: {{call|invoke}}<br class="gmail_msg">
> +<br class="gmail_msg">
> +invcont4:<br class="gmail_msg">
> +  ret void<br class="gmail_msg">
> +<br class="gmail_msg">
> +cleanup:<br class="gmail_msg">
> +  %ex = landingpad {i8*, i32} cleanup<br class="gmail_msg">
> +  resume { i8*, i32 } %ex<br class="gmail_msg">
> +}<br class="gmail_msg">
><br class="gmail_msg">
> -define void @bc__support__high_resolution_time___elabb() {<br class="gmail_msg">
> +define void @h() {<br class="gmail_msg">
> +; CHECK-LABEL: define void @h() personality i32 (...)* @__gxx_personality_v0<br class="gmail_msg">
> entry:<br class="gmail_msg">
> -     call fastcc void @bc__support__high_resolution_time__initialize_clock_rate( )<br class="gmail_msg">
> -     ret void<br class="gmail_msg">
> +  call void @g()<br class="gmail_msg">
> +; CHECK-NOT: {{call|invoke}}<br class="gmail_msg">
> +; CHECK: invoke void @a()<br class="gmail_msg">
> +; CHECK-NOT: {{call|invoke}}<br class="gmail_msg">
> +; CHECK: invoke void @b()<br class="gmail_msg">
> +; CHECK-NOT: {{call|invoke}}<br class="gmail_msg">
> +; CHECK: invoke void @c()<br class="gmail_msg">
> +; CHECK-NOT: {{call|invoke}}<br class="gmail_msg">
> +; CHECK: call void asm<br class="gmail_msg">
> +; CHECK-NOT: {{call|invoke}}<br class="gmail_msg">
> +<br class="gmail_msg">
> +  ret void<br class="gmail_msg">
> }<br class="gmail_msg">
><br class="gmail_msg">
> Modified: llvm/trunk/test/Transforms/Inline/2007-06-25-WeakInline.ll<br class="gmail_msg">
> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/Inline/2007-06-25-WeakInline.ll?rev=290570&r1=290569&r2=290570&view=diff" rel="noreferrer" class="gmail_msg" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/Inline/2007-06-25-WeakInline.ll?rev=290570&r1=290569&r2=290570&view=diff</a><br class="gmail_msg">
> ==============================================================================<br class="gmail_msg">
> --- llvm/trunk/test/Transforms/Inline/2007-06-25-WeakInline.ll (original)<br class="gmail_msg">
> +++ llvm/trunk/test/Transforms/Inline/2007-06-25-WeakInline.ll Mon Dec 26 20:47:37 2016<br class="gmail_msg">
> @@ -1,14 +1,17 @@<br class="gmail_msg">
> -; RUN: opt < %s -inline -S | grep call<br class="gmail_msg">
> +; RUN: opt < %s -inline -S | FileCheck %s<br class="gmail_msg">
><br class="gmail_msg">
> ; 'bar' can be overridden at link-time, don't inline it.<br class="gmail_msg">
> -<br class="gmail_msg">
> -define void @foo() {<br class="gmail_msg">
> +define weak void @bar() {<br class="gmail_msg">
> +; CHECK-LABEL: define weak void @bar()<br class="gmail_msg">
> entry:<br class="gmail_msg">
> -        tail call void @bar( )            ; <i32> [#uses=0]<br class="gmail_msg">
> -        ret void<br class="gmail_msg">
> +  ret void<br class="gmail_msg">
> }<br class="gmail_msg">
><br class="gmail_msg">
> -define weak void @bar() {<br class="gmail_msg">
> -        ret void<br class="gmail_msg">
> +define void @foo() {<br class="gmail_msg">
> +; CHECK-LABEL: define void @foo()<br class="gmail_msg">
> +entry:<br class="gmail_msg">
> +  tail call void @bar()<br class="gmail_msg">
> +; CHECK: tail call void @bar()<br class="gmail_msg">
> +  ret void<br class="gmail_msg">
> }<br class="gmail_msg">
><br class="gmail_msg">
><br class="gmail_msg">
> Modified: llvm/trunk/test/Transforms/Inline/2007-12-19-InlineNoUnwind.ll<br class="gmail_msg">
> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/Inline/2007-12-19-InlineNoUnwind.ll?rev=290570&r1=290569&r2=290570&view=diff" rel="noreferrer" class="gmail_msg" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/Inline/2007-12-19-InlineNoUnwind.ll?rev=290570&r1=290569&r2=290570&view=diff</a><br class="gmail_msg">
> ==============================================================================<br class="gmail_msg">
> --- llvm/trunk/test/Transforms/Inline/2007-12-19-InlineNoUnwind.ll (original)<br class="gmail_msg">
> +++ llvm/trunk/test/Transforms/Inline/2007-12-19-InlineNoUnwind.ll Mon Dec 26 20:47:37 2016<br class="gmail_msg">
> @@ -1,19 +1,34 @@<br class="gmail_msg">
> -; RUN: opt < %s -inline -S | grep nounwind<br class="gmail_msg">
> -; RUN: opt < %s -inline -S | grep unreachable<br class="gmail_msg">
> +; RUN: opt < %s -inline -S | FileCheck %s<br class="gmail_msg">
><br class="gmail_msg">
> declare i1 @extern()<br class="gmail_msg">
><br class="gmail_msg">
> define internal i32 @test() {<br class="gmail_msg">
> +; CHECK-NOT: define .* @test()<br class="gmail_msg">
> entry:<br class="gmail_msg">
> -     %n = call i1 @extern( )<br class="gmail_msg">
> -     br i1 %n, label %r, label %u<br class="gmail_msg">
> +  %n = call i1 @extern()<br class="gmail_msg">
> +  br i1 %n, label %r, label %u<br class="gmail_msg">
> +<br class="gmail_msg">
> r:<br class="gmail_msg">
> -     ret i32 0<br class="gmail_msg">
> +  ret i32 0<br class="gmail_msg">
> +<br class="gmail_msg">
> u:<br class="gmail_msg">
> -     unreachable<br class="gmail_msg">
> +  unreachable<br class="gmail_msg">
> }<br class="gmail_msg">
><br class="gmail_msg">
> define i32 @caller() {<br class="gmail_msg">
> -     %X = call i32 @test( ) nounwind<br class="gmail_msg">
> -     ret i32 %X<br class="gmail_msg">
> +; CHECK-LABEL: define i32 @caller()<br class="gmail_msg">
> +entry:<br class="gmail_msg">
> +  %X = call i32 @test() nounwind<br class="gmail_msg">
> +; CHECK-NOT: call i32 @test()<br class="gmail_msg">
> +; CHECK: call i1 @extern() #0<br class="gmail_msg">
> +; CHECK: br i1 %{{.*}}, label %[[R:.*]], label %[[U:.*]]<br class="gmail_msg">
> +<br class="gmail_msg">
> +; CHECK: [[U]]:<br class="gmail_msg">
> +; CHECK:   unreachable<br class="gmail_msg">
> +<br class="gmail_msg">
> +; CHECK: [[R]]:<br class="gmail_msg">
> +  ret i32 %X<br class="gmail_msg">
> +; CHECK:   ret i32 0<br class="gmail_msg">
> }<br class="gmail_msg">
> +<br class="gmail_msg">
> +; CHECK: attributes #0 = { nounwind }<br class="gmail_msg">
><br class="gmail_msg">
> Modified: llvm/trunk/test/Transforms/Inline/2008-09-02-NoInline.ll<br class="gmail_msg">
> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/Inline/2008-09-02-NoInline.ll?rev=290570&r1=290569&r2=290570&view=diff" rel="noreferrer" class="gmail_msg" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/Inline/2008-09-02-NoInline.ll?rev=290570&r1=290569&r2=290570&view=diff</a><br class="gmail_msg">
> ==============================================================================<br class="gmail_msg">
> --- llvm/trunk/test/Transforms/Inline/2008-09-02-NoInline.ll (original)<br class="gmail_msg">
> +++ llvm/trunk/test/Transforms/Inline/2008-09-02-NoInline.ll Mon Dec 26 20:47:37 2016<br class="gmail_msg">
> @@ -1,10 +1,16 @@<br class="gmail_msg">
> -; RUN: opt < %s -inline -S | grep call | count 1<br class="gmail_msg">
> +; RUN: opt < %s -inline -S | FileCheck %s<br class="gmail_msg">
><br class="gmail_msg">
> define i32 @fn2() noinline {<br class="gmail_msg">
> +; CHECK-LABEL: define i32 @fn2()<br class="gmail_msg">
> +entry:<br class="gmail_msg">
>   ret i32 1<br class="gmail_msg">
> }<br class="gmail_msg">
><br class="gmail_msg">
> define i32 @fn3() {<br class="gmail_msg">
> -   %r = call i32 @fn2()<br class="gmail_msg">
> -   ret i32 %r<br class="gmail_msg">
> +; CHECK-LABEL: define i32 @fn3()<br class="gmail_msg">
> +entry:<br class="gmail_msg">
> +  %r = call i32 @fn2()<br class="gmail_msg">
> +; CHECK: call i32 @fn2()<br class="gmail_msg">
> +<br class="gmail_msg">
> +  ret i32 %r<br class="gmail_msg">
> }<br class="gmail_msg">
><br class="gmail_msg">
> Modified: llvm/trunk/test/Transforms/Inline/2009-01-08-NoInlineDynamicAlloca.ll<br class="gmail_msg">
> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/Inline/2009-01-08-NoInlineDynamicAlloca.ll?rev=290570&r1=290569&r2=290570&view=diff" rel="noreferrer" class="gmail_msg" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/Inline/2009-01-08-NoInlineDynamicAlloca.ll?rev=290570&r1=290569&r2=290570&view=diff</a><br class="gmail_msg">
> ==============================================================================<br class="gmail_msg">
> --- llvm/trunk/test/Transforms/Inline/2009-01-08-NoInlineDynamicAlloca.ll (original)<br class="gmail_msg">
> +++ llvm/trunk/test/Transforms/Inline/2009-01-08-NoInlineDynamicAlloca.ll Mon Dec 26 20:47:37 2016<br class="gmail_msg">
> @@ -1,36 +1,39 @@<br class="gmail_msg">
> -; RUN: opt < %s -inline -S | grep call<br class="gmail_msg">
> -; Do not inline calls to variable-sized alloca.<br class="gmail_msg">
> +; RUN: opt < %s -inline -S | FileCheck %s<br class="gmail_msg">
> +; Do not inline calls with variable-sized alloca.<br class="gmail_msg">
><br class="gmail_msg">
> -@q = common global i8* null          ; <i8**> [#uses=1]<br class="gmail_msg">
> +@q = common global i8* null<br class="gmail_msg">
><br class="gmail_msg">
> define i8* @a(i32 %i) nounwind {<br class="gmail_msg">
> +; CHECK-LABEL: define i8* @a<br class="gmail_msg">
> entry:<br class="gmail_msg">
> -     %i_addr = alloca i32            ; <i32*> [#uses=2]<br class="gmail_msg">
> -     %retval = alloca i8*            ; <i8**> [#uses=1]<br class="gmail_msg">
> -     %p = alloca i8*         ; <i8**> [#uses=2]<br class="gmail_msg">
> -     %"alloca point" = bitcast i32 0 to i32          ; <i32> [#uses=0]<br class="gmail_msg">
> -     store i32 %i, i32* %i_addr<br class="gmail_msg">
> -     %0 = load i32, i32* %i_addr, align 4            ; <i32> [#uses=1]<br class="gmail_msg">
> -     %1 = alloca i8, i32 %0          ; <i8*> [#uses=1]<br class="gmail_msg">
> -     store i8* %1, i8** %p, align 4<br class="gmail_msg">
> -     %2 = load i8*, i8** %p, align 4         ; <i8*> [#uses=1]<br class="gmail_msg">
> -     store i8* %2, i8** @q, align 4<br class="gmail_msg">
> -     br label %return<br class="gmail_msg">
> +  %i_addr = alloca i32<br class="gmail_msg">
> +  %retval = alloca i8*<br class="gmail_msg">
> +  %p = alloca i8*<br class="gmail_msg">
> +  %"alloca point" = bitcast i32 0 to i32<br class="gmail_msg">
> +  store i32 %i, i32* %i_addr<br class="gmail_msg">
> +  %0 = load i32, i32* %i_addr, align 4<br class="gmail_msg">
> +  %1 = alloca i8, i32 %0<br class="gmail_msg">
> +  store i8* %1, i8** %p, align 4<br class="gmail_msg">
> +  %2 = load i8*, i8** %p, align 4<br class="gmail_msg">
> +  store i8* %2, i8** @q, align 4<br class="gmail_msg">
> +  br label %return<br class="gmail_msg">
><br class="gmail_msg">
> -return:              ; preds = %entry<br class="gmail_msg">
> -     %retval1 = load i8*, i8** %retval               ; <i8*> [#uses=1]<br class="gmail_msg">
> -     ret i8* %retval1<br class="gmail_msg">
> +return:<br class="gmail_msg">
> +  %retval1 = load i8*, i8** %retval<br class="gmail_msg">
> +  ret i8* %retval1<br class="gmail_msg">
> }<br class="gmail_msg">
><br class="gmail_msg">
> define void @b(i32 %i) nounwind {<br class="gmail_msg">
> +; CHECK-LABEL: define void @b<br class="gmail_msg">
> entry:<br class="gmail_msg">
> -     %i_addr = alloca i32            ; <i32*> [#uses=2]<br class="gmail_msg">
> -     %"alloca point" = bitcast i32 0 to i32          ; <i32> [#uses=0]<br class="gmail_msg">
> -     store i32 %i, i32* %i_addr<br class="gmail_msg">
> -     %0 = load i32, i32* %i_addr, align 4            ; <i32> [#uses=1]<br class="gmail_msg">
> -     %1 = call i8* @a(i32 %0) nounwind               ; <i8*> [#uses=0]<br class="gmail_msg">
> -     br label %return<br class="gmail_msg">
> +  %i_addr = alloca i32<br class="gmail_msg">
> +  %"alloca point" = bitcast i32 0 to i32<br class="gmail_msg">
> +  store i32 %i, i32* %i_addr<br class="gmail_msg">
> +  %0 = load i32, i32* %i_addr, align 4<br class="gmail_msg">
> +  %1 = call i8* @a(i32 %0) nounwind<br class="gmail_msg">
> +; CHECK: call i8* @a<br class="gmail_msg">
> +  br label %return<br class="gmail_msg">
><br class="gmail_msg">
> -return:              ; preds = %entry<br class="gmail_msg">
> -     ret void<br class="gmail_msg">
> +return:<br class="gmail_msg">
> +  ret void<br class="gmail_msg">
> }<br class="gmail_msg">
><br class="gmail_msg">
> Modified: llvm/trunk/test/Transforms/Inline/casts.ll<br class="gmail_msg">
> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/Inline/casts.ll?rev=290570&r1=290569&r2=290570&view=diff" rel="noreferrer" class="gmail_msg" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/Inline/casts.ll?rev=290570&r1=290569&r2=290570&view=diff</a><br class="gmail_msg">
> ==============================================================================<br class="gmail_msg">
> --- llvm/trunk/test/Transforms/Inline/casts.ll (original)<br class="gmail_msg">
> +++ llvm/trunk/test/Transforms/Inline/casts.ll Mon Dec 26 20:47:37 2016<br class="gmail_msg">
> @@ -1,19 +1,17 @@<br class="gmail_msg">
> -; RUN: opt < %s -inline -S | grep "ret i32 1"<br class="gmail_msg">
> -; ModuleID = 'short.opt.bc'<br class="gmail_msg">
> -<br class="gmail_msg">
> -define i32 @testBool(i1 %X) {<br class="gmail_msg">
> -        %tmp = zext i1 %X to i32                ; <i32> [#uses=1]<br class="gmail_msg">
> -        ret i32 %tmp<br class="gmail_msg">
> -}<br class="gmail_msg">
> +; RUN: opt < %s -inline -S | FileCheck %s<br class="gmail_msg">
><br class="gmail_msg">
> define i32 @testByte(i8 %X) {<br class="gmail_msg">
> -        %tmp = icmp ne i8 %X, 0         ; <i1> [#uses=1]<br class="gmail_msg">
> -        %tmp.i = zext i1 %tmp to i32            ; <i32> [#uses=1]<br class="gmail_msg">
> -        ret i32 %tmp.i<br class="gmail_msg">
> +entry:<br class="gmail_msg">
> +  %tmp = icmp ne i8 %X, 0<br class="gmail_msg">
> +  %tmp.i = zext i1 %tmp to i32<br class="gmail_msg">
> +  ret i32 %tmp.i<br class="gmail_msg">
> }<br class="gmail_msg">
><br class="gmail_msg">
> define i32 @main() {<br class="gmail_msg">
> -        %rslt = call i32 @testByte( i8 123 )            ; <i32> [#uses=1]<br class="gmail_msg">
> -        ret i32 %rslt<br class="gmail_msg">
> +; CHECK-LABEL: define i32 @main()<br class="gmail_msg">
> +entry:<br class="gmail_msg">
> +  %rslt = call i32 @testByte(i8 123)<br class="gmail_msg">
> +; CHECK-NOT: call<br class="gmail_msg">
> +  ret i32 %rslt<br class="gmail_msg">
> +; CHECK: ret i32 1<br class="gmail_msg">
> }<br class="gmail_msg">
> -<br class="gmail_msg">
><br class="gmail_msg">
> Modified: llvm/trunk/test/Transforms/Inline/cfg_preserve_test.ll<br class="gmail_msg">
> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/Inline/cfg_preserve_test.ll?rev=290570&r1=290569&r2=290570&view=diff" rel="noreferrer" class="gmail_msg" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/Inline/cfg_preserve_test.ll?rev=290570&r1=290569&r2=290570&view=diff</a><br class="gmail_msg">
> ==============================================================================<br class="gmail_msg">
> --- llvm/trunk/test/Transforms/Inline/cfg_preserve_test.ll (original)<br class="gmail_msg">
> +++ llvm/trunk/test/Transforms/Inline/cfg_preserve_test.ll Mon Dec 26 20:47:37 2016<br class="gmail_msg">
> @@ -1,16 +1,20 @@<br class="gmail_msg">
> ; This test ensures that inlining an "empty" function does not destroy the CFG<br class="gmail_msg">
> ;<br class="gmail_msg">
> -; RUN: opt < %s -inline -S | not grep br<br class="gmail_msg">
> +; RUN: opt < %s -inline -S | FileCheck %s<br class="gmail_msg">
><br class="gmail_msg">
> define i32 @func(i32 %i) {<br class="gmail_msg">
> -        ret i32 %i<br class="gmail_msg">
> +  ret i32 %i<br class="gmail_msg">
> }<br class="gmail_msg">
><br class="gmail_msg">
> -declare void @bar()<br class="gmail_msg">
><br class="gmail_msg">
> -define i32 @main(i32 %argc) {<br class="gmail_msg">
> -Entry:<br class="gmail_msg">
> -        %X = call i32 @func( i32 7 )            ; <i32> [#uses=1]<br class="gmail_msg">
> -        ret i32 %X<br class="gmail_msg">
> +define i32 @main() {<br class="gmail_msg">
> +; CHECK-LABEL: define i32 @main()<br class="gmail_msg">
> +entry:<br class="gmail_msg">
> +  %X = call i32 @func(i32 7)<br class="gmail_msg">
> +; CHECK-NOT: call<br class="gmail_msg">
> +; CHECK-NOT: br<br class="gmail_msg">
> +<br class="gmail_msg">
> +  ret i32 %X<br class="gmail_msg">
> +; CHECK: ret i32 7<br class="gmail_msg">
> }<br class="gmail_msg">
><br class="gmail_msg">
><br class="gmail_msg">
> Modified: llvm/trunk/test/Transforms/Inline/externally_available.ll<br class="gmail_msg">
> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/Inline/externally_available.ll?rev=290570&r1=290569&r2=290570&view=diff" rel="noreferrer" class="gmail_msg" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/Inline/externally_available.ll?rev=290570&r1=290569&r2=290570&view=diff</a><br class="gmail_msg">
> ==============================================================================<br class="gmail_msg">
> --- llvm/trunk/test/Transforms/Inline/externally_available.ll (original)<br class="gmail_msg">
> +++ llvm/trunk/test/Transforms/Inline/externally_available.ll Mon Dec 26 20:47:37 2016<br class="gmail_msg">
> @@ -1,16 +1,22 @@<br class="gmail_msg">
> -; RUN: opt < %s -inline -constprop -S > %t<br class="gmail_msg">
> -; RUN: not grep test_function %t<br class="gmail_msg">
> -; RUN: grep "ret i32 5" %t<br class="gmail_msg">
> +; RUN: opt < %s -inline -constprop -S | FileCheck %s<br class="gmail_msg">
><br class="gmail_msg">
> -<br class="gmail_msg">
> -; test_function should not be emitted to the .s file.<br class="gmail_msg">
> define available_externally i32 @test_function() {<br class="gmail_msg">
> +; CHECK-NOT: @test_function<br class="gmail_msg">
> +entry:<br class="gmail_msg">
>   ret i32 4<br class="gmail_msg">
> }<br class="gmail_msg">
><br class="gmail_msg">
><br class="gmail_msg">
> define i32 @result() {<br class="gmail_msg">
> +; CHECK-LABEL: define i32 @result()<br class="gmail_msg">
> +entry:<br class="gmail_msg">
>   %A = call i32 @test_function()<br class="gmail_msg">
> +; CHECK-NOT: call<br class="gmail_msg">
> +; CHECK-NOT: @test_function<br class="gmail_msg">
> +<br class="gmail_msg">
>   %B = add i32 %A, 1<br class="gmail_msg">
>   ret i32 %B<br class="gmail_msg">
> +; CHECK: ret i32 5<br class="gmail_msg">
> }<br class="gmail_msg">
> +<br class="gmail_msg">
> +; CHECK-NOT: @test_function<br class="gmail_msg">
><br class="gmail_msg">
> Modified: llvm/trunk/test/Transforms/Inline/inline-invoke-tail.ll<br class="gmail_msg">
> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/Inline/inline-invoke-tail.ll?rev=290570&r1=290569&r2=290570&view=diff" rel="noreferrer" class="gmail_msg" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/Inline/inline-invoke-tail.ll?rev=290570&r1=290569&r2=290570&view=diff</a><br class="gmail_msg">
> ==============================================================================<br class="gmail_msg">
> --- llvm/trunk/test/Transforms/Inline/inline-invoke-tail.ll (original)<br class="gmail_msg">
> +++ llvm/trunk/test/Transforms/Inline/inline-invoke-tail.ll Mon Dec 26 20:47:37 2016<br class="gmail_msg">
> @@ -2,28 +2,37 @@<br class="gmail_msg">
> ; PR3550<br class="gmail_msg">
><br class="gmail_msg">
> define internal void @foo(i32* %p, i32* %q) {<br class="gmail_msg">
> -     %pp = bitcast i32* %p to i8*<br class="gmail_msg">
> -     %qq = bitcast i32* %q to i8*<br class="gmail_msg">
> -     tail call void @llvm.memcpy.p0i8.p0i8.i32(i8* %pp, i8* %qq, i32 4, i32 1, i1 false)<br class="gmail_msg">
> -     ret void<br class="gmail_msg">
> +; CHECK-NOT: @foo<br class="gmail_msg">
> +entry:<br class="gmail_msg">
> +  %pp = bitcast i32* %p to i8*<br class="gmail_msg">
> +  %qq = bitcast i32* %q to i8*<br class="gmail_msg">
> +  tail call void @llvm.memcpy.p0i8.p0i8.i32(i8* %pp, i8* %qq, i32 4, i32 1, i1 false)<br class="gmail_msg">
> +  ret void<br class="gmail_msg">
> }<br class="gmail_msg">
><br class="gmail_msg">
> define i32 @main() personality i32 (...)* @__gxx_personality_v0 {<br class="gmail_msg">
> -     %a = alloca i32         ; <i32*> [#uses=3]<br class="gmail_msg">
> -     %b = alloca i32         ; <i32*> [#uses=2]<br class="gmail_msg">
> -     store i32 1, i32* %a, align 4<br class="gmail_msg">
> -     store i32 0, i32* %b, align 4<br class="gmail_msg">
> -     invoke void @foo(i32* %a, i32* %b)<br class="gmail_msg">
> -                     to label %invcont unwind label %lpad<br class="gmail_msg">
> +; CHECK-LABEL: define i32 @main() personality i32 (...)* @__gxx_personality_v0<br class="gmail_msg">
> +entry:<br class="gmail_msg">
> +  %a = alloca i32<br class="gmail_msg">
> +  %b = alloca i32<br class="gmail_msg">
> +  store i32 1, i32* %a, align 4<br class="gmail_msg">
> +  store i32 0, i32* %b, align 4<br class="gmail_msg">
> +  invoke void @foo(i32* %a, i32* %b)<br class="gmail_msg">
> +      to label %invcont unwind label %lpad<br class="gmail_msg">
> +; CHECK-NOT: invoke<br class="gmail_msg">
> +; CHECK-NOT: @foo<br class="gmail_msg">
> +; CHECK-NOT: tail<br class="gmail_msg">
> +; CHCEK: call void @llvm.memcpy.p0i8.p0i8.i32<br class="gmail_msg">
> +; CHECK: br<br class="gmail_msg">
><br class="gmail_msg">
> invcont:<br class="gmail_msg">
> -     %retval = load i32, i32* %a, align 4<br class="gmail_msg">
> -     ret i32 %retval<br class="gmail_msg">
> +  %retval = load i32, i32* %a, align 4<br class="gmail_msg">
> +  ret i32 %retval<br class="gmail_msg">
><br class="gmail_msg">
> lpad:<br class="gmail_msg">
> -        %exn = landingpad {i8*, i32}<br class="gmail_msg">
> -            catch i8* null<br class="gmail_msg">
> -     unreachable<br class="gmail_msg">
> +  %exn = landingpad {i8*, i32}<br class="gmail_msg">
> +         catch i8* null<br class="gmail_msg">
> +  unreachable<br class="gmail_msg">
> }<br class="gmail_msg">
><br class="gmail_msg">
> declare i32 @__gxx_personality_v0(...)<br class="gmail_msg">
><br class="gmail_msg">
> Modified: llvm/trunk/test/Transforms/Inline/inline_dce.ll<br class="gmail_msg">
> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/Inline/inline_dce.ll?rev=290570&r1=290569&r2=290570&view=diff" rel="noreferrer" class="gmail_msg" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/Inline/inline_dce.ll?rev=290570&r1=290569&r2=290570&view=diff</a><br class="gmail_msg">
> ==============================================================================<br class="gmail_msg">
> --- llvm/trunk/test/Transforms/Inline/inline_dce.ll (original)<br class="gmail_msg">
> +++ llvm/trunk/test/Transforms/Inline/inline_dce.ll Mon Dec 26 20:47:37 2016<br class="gmail_msg">
> @@ -5,21 +5,32 @@<br class="gmail_msg">
> ; RUN:   not grep @reallysmall<br class="gmail_msg">
><br class="gmail_msg">
> define internal i32 @reallysmall(i32 %A) {<br class="gmail_msg">
> -        ret i32 %A<br class="gmail_msg">
> +; CHECK-NOT: @reallysmall<br class="gmail_msg">
> +entry:<br class="gmail_msg">
> +  ret i32 %A<br class="gmail_msg">
> }<br class="gmail_msg">
><br class="gmail_msg">
> define void @caller1() {<br class="gmail_msg">
> -        call i32 @reallysmall( i32 5 )          ; <i32>:1 [#uses=0]<br class="gmail_msg">
> -        ret void<br class="gmail_msg">
> +; CHECK-LABEL: define void @caller1()<br class="gmail_msg">
> +entry:<br class="gmail_msg">
> +  call i32 @reallysmall(i32 5)<br class="gmail_msg">
> +; CHECK-NOT: call<br class="gmail_msg">
> +  ret void<br class="gmail_msg">
> }<br class="gmail_msg">
><br class="gmail_msg">
> define void @caller2(i32 %A) {<br class="gmail_msg">
> -        call i32 @reallysmall( i32 %A )         ; <i32>:1 [#uses=0]<br class="gmail_msg">
> -        ret void<br class="gmail_msg">
> +; CHECK-LABEL: define void @caller2(i32 %A)<br class="gmail_msg">
> +entry:<br class="gmail_msg">
> +  call i32 @reallysmall(i32 %A)<br class="gmail_msg">
> +; CHECK-NOT: call<br class="gmail_msg">
> +  ret void<br class="gmail_msg">
> }<br class="gmail_msg">
><br class="gmail_msg">
> define i32 @caller3(i32 %A) {<br class="gmail_msg">
> -        %B = call i32 @reallysmall( i32 %A )            ; <i32> [#uses=1]<br class="gmail_msg">
> -        ret i32 %B<br class="gmail_msg">
> +; CHECK-LABEL: define void @caller3(i32 %A)<br class="gmail_msg">
> +entry:<br class="gmail_msg">
> +  %B = call i32 @reallysmall(i32 %A)<br class="gmail_msg">
> +; CHECK-NOT: call<br class="gmail_msg">
> +  ret i32 %B<br class="gmail_msg">
> }<br class="gmail_msg">
><br class="gmail_msg">
><br class="gmail_msg">
> Modified: llvm/trunk/test/Transforms/Inline/inline_prune.ll<br class="gmail_msg">
> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/Inline/inline_prune.ll?rev=290570&r1=290569&r2=290570&view=diff" rel="noreferrer" class="gmail_msg" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/Inline/inline_prune.ll?rev=290570&r1=290569&r2=290570&view=diff</a><br class="gmail_msg">
> ==============================================================================<br class="gmail_msg">
> --- llvm/trunk/test/Transforms/Inline/inline_prune.ll (original)<br class="gmail_msg">
> +++ llvm/trunk/test/Transforms/Inline/inline_prune.ll Mon Dec 26 20:47:37 2016<br class="gmail_msg">
> @@ -1,45 +1,53 @@<br class="gmail_msg">
> -; RUN: opt < %s -inline -S | \<br class="gmail_msg">
> -; RUN:    not grep "callee[12]("<br class="gmail_msg">
> -; RUN: opt < %s -inline -S | not grep mul<br class="gmail_msg">
> +; RUN: opt < %s -inline -S | FileCheck %s<br class="gmail_msg">
><br class="gmail_msg">
> define internal i32 @callee1(i32 %A, i32 %B) {<br class="gmail_msg">
> -        %cond = icmp eq i32 %A, 123             ; <i1> [#uses=1]<br class="gmail_msg">
> -        br i1 %cond, label %T, label %F<br class="gmail_msg">
> +; CHECK-NOT: @callee1<br class="gmail_msg">
> +entry:<br class="gmail_msg">
> +  %cond = icmp eq i32 %A, 123<br class="gmail_msg">
> +  br i1 %cond, label %T, label %F<br class="gmail_msg">
> +<br class="gmail_msg">
> +T:<br class="gmail_msg">
> +  %C = mul i32 %B, %B<br class="gmail_msg">
> +  ret i32 %C<br class="gmail_msg">
><br class="gmail_msg">
> -T:              ; preds = %0<br class="gmail_msg">
> -        %C = mul i32 %B, %B             ; <i32> [#uses=1]<br class="gmail_msg">
> -        ret i32 %C<br class="gmail_msg">
> -<br class="gmail_msg">
> -F:              ; preds = %0<br class="gmail_msg">
> -        ret i32 0<br class="gmail_msg">
> +F:<br class="gmail_msg">
> +  ret i32 0<br class="gmail_msg">
> }<br class="gmail_msg">
><br class="gmail_msg">
> define internal i32 @callee2(i32 %A, i32 %B) {<br class="gmail_msg">
> -        switch i32 %A, label %T [<br class="gmail_msg">
> -                 i32 10, label %F<br class="gmail_msg">
> -                 i32 1234, label %G<br class="gmail_msg">
> -        ]<br class="gmail_msg">
> -                ; No predecessors!<br class="gmail_msg">
> -        %cond = icmp eq i32 %A, 123             ; <i1> [#uses=1]<br class="gmail_msg">
> -        br i1 %cond, label %T, label %F<br class="gmail_msg">
> -<br class="gmail_msg">
> -T:              ; preds = %1, %0<br class="gmail_msg">
> -        %C = mul i32 %B, %B             ; <i32> [#uses=1]<br class="gmail_msg">
> -        ret i32 %C<br class="gmail_msg">
> -<br class="gmail_msg">
> -F:              ; preds = %1, %0<br class="gmail_msg">
> -        ret i32 0<br class="gmail_msg">
> -<br class="gmail_msg">
> -G:              ; preds = %0<br class="gmail_msg">
> -        %D = mul i32 %B, %B             ; <i32> [#uses=1]<br class="gmail_msg">
> -        %E = mul i32 %D, %B             ; <i32> [#uses=1]<br class="gmail_msg">
> -        ret i32 %E<br class="gmail_msg">
> +; CHECK-NOT: @callee2<br class="gmail_msg">
> +entry:<br class="gmail_msg">
> +  switch i32 %A, label %T [<br class="gmail_msg">
> +           i32 10, label %F<br class="gmail_msg">
> +           i32 1234, label %G<br class="gmail_msg">
> +  ]<br class="gmail_msg">
> +<br class="gmail_msg">
> +dead:<br class="gmail_msg">
> +  %cond = icmp eq i32 %A, 123<br class="gmail_msg">
> +  br i1 %cond, label %T, label %F<br class="gmail_msg">
> +<br class="gmail_msg">
> +T:<br class="gmail_msg">
> +  %C = mul i32 %B, %B<br class="gmail_msg">
> +  ret i32 %C<br class="gmail_msg">
> +<br class="gmail_msg">
> +F:<br class="gmail_msg">
> +  ret i32 0<br class="gmail_msg">
> +<br class="gmail_msg">
> +G:<br class="gmail_msg">
> +  %D = mul i32 %B, %B<br class="gmail_msg">
> +  %E = mul i32 %D, %B<br class="gmail_msg">
> +  ret i32 %E<br class="gmail_msg">
> }<br class="gmail_msg">
><br class="gmail_msg">
> define i32 @test(i32 %A) {<br class="gmail_msg">
> -        %X = call i32 @callee1( i32 10, i32 %A )                ; <i32> [#uses=1]<br class="gmail_msg">
> -        %Y = call i32 @callee2( i32 10, i32 %A )                ; <i32> [#uses=1]<br class="gmail_msg">
> -        %Z = add i32 %X, %Y             ; <i32> [#uses=1]<br class="gmail_msg">
> -        ret i32 %Z<br class="gmail_msg">
> +; CHECK-LABEL: define i32 @test(i32 %A)<br class="gmail_msg">
> +entry:<br class="gmail_msg">
> +  %X = call i32 @callee1( i32 10, i32 %A )<br class="gmail_msg">
> +  %Y = call i32 @callee2( i32 10, i32 %A )<br class="gmail_msg">
> +; CHECK-NOT: call<br class="gmail_msg">
> +; CHECK-NOT: mul<br class="gmail_msg">
> +<br class="gmail_msg">
> +  %Z = add i32 %X, %Y<br class="gmail_msg">
> +  ret i32 %Z<br class="gmail_msg">
> }<br class="gmail_msg">
><br class="gmail_msg">
><br class="gmail_msg">
> Modified: llvm/trunk/test/Transforms/Inline/invoke_test-1.ll<br class="gmail_msg">
> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/Inline/invoke_test-1.ll?rev=290570&r1=290569&r2=290570&view=diff" rel="noreferrer" class="gmail_msg" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/Inline/invoke_test-1.ll?rev=290570&r1=290569&r2=290570&view=diff</a><br class="gmail_msg">
> ==============================================================================<br class="gmail_msg">
> --- llvm/trunk/test/Transforms/Inline/invoke_test-1.ll (original)<br class="gmail_msg">
> +++ llvm/trunk/test/Transforms/Inline/invoke_test-1.ll Mon Dec 26 20:47:37 2016<br class="gmail_msg">
> @@ -1,28 +1,32 @@<br class="gmail_msg">
> ; Test that we can inline a simple function, turning the calls in it into invoke<br class="gmail_msg">
> ; instructions<br class="gmail_msg">
><br class="gmail_msg">
> -; RUN: opt < %s -inline -S | \<br class="gmail_msg">
> -; RUN:   not grep "call[^e]"<br class="gmail_msg">
> +; RUN: opt < %s -inline -S | FileCheck %s<br class="gmail_msg">
><br class="gmail_msg">
> declare void @might_throw()<br class="gmail_msg">
><br class="gmail_msg">
> define internal void @callee() {<br class="gmail_msg">
> -        call void @might_throw( )<br class="gmail_msg">
> -        ret void<br class="gmail_msg">
> +entry:<br class="gmail_msg">
> +  call void @might_throw()<br class="gmail_msg">
> +  ret void<br class="gmail_msg">
> }<br class="gmail_msg">
><br class="gmail_msg">
> ; caller returns true if might_throw throws an exception...<br class="gmail_msg">
> define i32 @caller() personality i32 (...)* @__gxx_personality_v0 {<br class="gmail_msg">
> -        invoke void @callee( )<br class="gmail_msg">
> -                        to label %cont unwind label %exc<br class="gmail_msg">
> -<br class="gmail_msg">
> -cont:           ; preds = %0<br class="gmail_msg">
> -        ret i32 0<br class="gmail_msg">
> -<br class="gmail_msg">
> -exc:            ; preds = %0<br class="gmail_msg">
> -        %exn = landingpad {i8*, i32}<br class="gmail_msg">
> -                 cleanup<br class="gmail_msg">
> -        ret i32 1<br class="gmail_msg">
> +; CHECK-LABEL: define i32 @caller() personality i32 (...)* @__gxx_personality_v0<br class="gmail_msg">
> +entry:<br class="gmail_msg">
> +  invoke void @callee()<br class="gmail_msg">
> +      to label %cont unwind label %exc<br class="gmail_msg">
> +; CHECK-NOT: @callee<br class="gmail_msg">
> +; CHECK: invoke void @might_throw()<br class="gmail_msg">
> +<br class="gmail_msg">
> +cont:<br class="gmail_msg">
> +  ret i32 0<br class="gmail_msg">
> +<br class="gmail_msg">
> +exc:<br class="gmail_msg">
> +  %exn = landingpad {i8*, i32}<br class="gmail_msg">
> +         cleanup<br class="gmail_msg">
> +  ret i32 1<br class="gmail_msg">
> }<br class="gmail_msg">
><br class="gmail_msg">
> declare i32 @__gxx_personality_v0(...)<br class="gmail_msg">
><br class="gmail_msg">
> Modified: llvm/trunk/test/Transforms/Inline/invoke_test-2.ll<br class="gmail_msg">
> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/Inline/invoke_test-2.ll?rev=290570&r1=290569&r2=290570&view=diff" rel="noreferrer" class="gmail_msg" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/Inline/invoke_test-2.ll?rev=290570&r1=290569&r2=290570&view=diff</a><br class="gmail_msg">
> ==============================================================================<br class="gmail_msg">
> --- llvm/trunk/test/Transforms/Inline/invoke_test-2.ll (original)<br class="gmail_msg">
> +++ llvm/trunk/test/Transforms/Inline/invoke_test-2.ll Mon Dec 26 20:47:37 2016<br class="gmail_msg">
> @@ -1,36 +1,52 @@<br class="gmail_msg">
> ; Test that if an invoked function is inlined, and if that function cannot<br class="gmail_msg">
> ; throw, that the dead handler is now unreachable.<br class="gmail_msg">
><br class="gmail_msg">
> -; RUN: opt < %s -inline -simplifycfg -S | \<br class="gmail_msg">
> -; RUN:   not grep UnreachableExceptionHandler<br class="gmail_msg">
> +; RUN: opt < %s -inline -simplifycfg -S | FileCheck %s<br class="gmail_msg">
><br class="gmail_msg">
> declare void @might_throw()<br class="gmail_msg">
><br class="gmail_msg">
> define internal i32 @callee() personality i32 (...)* @__gxx_personality_v0 {<br class="gmail_msg">
> -        invoke void @might_throw( )<br class="gmail_msg">
> -                        to label %cont unwind label %exc<br class="gmail_msg">
> -<br class="gmail_msg">
> -cont:           ; preds = %0<br class="gmail_msg">
> -        ret i32 0<br class="gmail_msg">
> -<br class="gmail_msg">
> -exc:            ; preds = %0<br class="gmail_msg">
> -        %exn = landingpad {i8*, i32}<br class="gmail_msg">
> -                 cleanup<br class="gmail_msg">
> -        ret i32 1<br class="gmail_msg">
> +enrty:<br class="gmail_msg">
> +  invoke void @might_throw()<br class="gmail_msg">
> +      to label %cont unwind label %exc<br class="gmail_msg">
> +<br class="gmail_msg">
> +cont:<br class="gmail_msg">
> +  ret i32 0<br class="gmail_msg">
> +<br class="gmail_msg">
> +exc:<br class="gmail_msg">
> +  %exn = landingpad {i8*, i32}<br class="gmail_msg">
> +         cleanup<br class="gmail_msg">
> +  ret i32 1<br class="gmail_msg">
> }<br class="gmail_msg">
><br class="gmail_msg">
> ; caller returns true if might_throw throws an exception... callee cannot throw.<br class="gmail_msg">
> define i32 @caller() personality i32 (...)* @__gxx_personality_v0 {<br class="gmail_msg">
> -        %X = invoke i32 @callee( )<br class="gmail_msg">
> -                        to label %cont unwind label %UnreachableExceptionHandler                ; <i32> [#uses=1]<br class="gmail_msg">
> -<br class="gmail_msg">
> -cont:           ; preds = %0<br class="gmail_msg">
> -        ret i32 %X<br class="gmail_msg">
> -<br class="gmail_msg">
> -UnreachableExceptionHandler:            ; preds = %0<br class="gmail_msg">
> -        %exn = landingpad {i8*, i32}<br class="gmail_msg">
> -                 cleanup<br class="gmail_msg">
> -        ret i32 -1<br class="gmail_msg">
> +; CHECK-LABEL: define i32 @caller() personality i32 (...)* @__gxx_personality_v0<br class="gmail_msg">
> +enrty:<br class="gmail_msg">
> +  %X = invoke i32 @callee()<br class="gmail_msg">
> +           to label %cont unwind label %UnreachableExceptionHandler<br class="gmail_msg">
> +; CHECK-NOT: @callee<br class="gmail_msg">
> +; CHECK: invoke void @might_throw()<br class="gmail_msg">
> +; CHECK:     to label %[[C:.*]] unwind label %[[E:.*]]<br class="gmail_msg">
> +<br class="gmail_msg">
> +; CHECK: [[E]]:<br class="gmail_msg">
> +; CHECK:   landingpad<br class="gmail_msg">
> +; CHECK:      cleanup<br class="gmail_msg">
> +; CHECK:   br label %[[C]]<br class="gmail_msg">
> +<br class="gmail_msg">
> +cont:<br class="gmail_msg">
> +; CHECK: [[C]]:<br class="gmail_msg">
> +  ret i32 %X<br class="gmail_msg">
> +; CHECK:   %[[PHI:.*]] = phi i32<br class="gmail_msg">
> +; CHECK:   ret i32 %[[PHI]]<br class="gmail_msg">
> +<br class="gmail_msg">
> +UnreachableExceptionHandler:<br class="gmail_msg">
> +; CHECK-NOT: UnreachableExceptionHandler:<br class="gmail_msg">
> +  %exn = landingpad {i8*, i32}<br class="gmail_msg">
> +         cleanup<br class="gmail_msg">
> +  ret i32 -1<br class="gmail_msg">
> +; CHECK-NOT: ret i32 -1<br class="gmail_msg">
> }<br class="gmail_msg">
> +; CHECK: }<br class="gmail_msg">
><br class="gmail_msg">
> declare i32 @__gxx_personality_v0(...)<br class="gmail_msg">
><br class="gmail_msg">
> Modified: llvm/trunk/test/Transforms/Inline/invoke_test-3.ll<br class="gmail_msg">
> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/Inline/invoke_test-3.ll?rev=290570&r1=290569&r2=290570&view=diff" rel="noreferrer" class="gmail_msg" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/Inline/invoke_test-3.ll?rev=290570&r1=290569&r2=290570&view=diff</a><br class="gmail_msg">
> ==============================================================================<br class="gmail_msg">
> --- llvm/trunk/test/Transforms/Inline/invoke_test-3.ll (original)<br class="gmail_msg">
> +++ llvm/trunk/test/Transforms/Inline/invoke_test-3.ll Mon Dec 26 20:47:37 2016<br class="gmail_msg">
> @@ -1,38 +1,47 @@<br class="gmail_msg">
> ; Test that any rethrown exceptions in an inlined function are automatically<br class="gmail_msg">
> ; turned into branches to the invoke destination.<br class="gmail_msg">
><br class="gmail_msg">
> -; RUN: opt < %s -inline -S | not grep unwind$<br class="gmail_msg">
> +; RUN: opt < %s -inline -S | FileCheck %s<br class="gmail_msg">
><br class="gmail_msg">
> declare void @might_throw()<br class="gmail_msg">
><br class="gmail_msg">
> define internal i32 @callee() personality i32 (...)* @__gxx_personality_v0 {<br class="gmail_msg">
> -        invoke void @might_throw( )<br class="gmail_msg">
> -                        to label %cont unwind label %exc<br class="gmail_msg">
> -<br class="gmail_msg">
> -cont:           ; preds = %0<br class="gmail_msg">
> -        ret i32 0<br class="gmail_msg">
> -<br class="gmail_msg">
> -exc:            ; preds = %0a<br class="gmail_msg">
> -       ; This just rethrows the exception!<br class="gmail_msg">
> -        %exn = landingpad {i8*, i32}<br class="gmail_msg">
> -                 cleanup<br class="gmail_msg">
> -        resume { i8*, i32 } %exn<br class="gmail_msg">
> +entry:<br class="gmail_msg">
> +  invoke void @might_throw()<br class="gmail_msg">
> +      to label %cont unwind label %exc<br class="gmail_msg">
> +<br class="gmail_msg">
> +cont:<br class="gmail_msg">
> +  ret i32 0<br class="gmail_msg">
> +<br class="gmail_msg">
> +exc:<br class="gmail_msg">
> + ; This just rethrows the exception!<br class="gmail_msg">
> +  %exn = landingpad {i8*, i32}<br class="gmail_msg">
> +         cleanup<br class="gmail_msg">
> +  resume { i8*, i32 } %exn<br class="gmail_msg">
> }<br class="gmail_msg">
><br class="gmail_msg">
> ; caller returns true if might_throw throws an exception... which gets<br class="gmail_msg">
> ; propagated by callee.<br class="gmail_msg">
> define i32 @caller() personality i32 (...)* @__gxx_personality_v0 {<br class="gmail_msg">
> -        %X = invoke i32 @callee( )<br class="gmail_msg">
> -                        to label %cont unwind label %Handler            ; <i32> [#uses=1]<br class="gmail_msg">
> +; CHECK-LABEL: define i32 @caller()<br class="gmail_msg">
> +entry:<br class="gmail_msg">
> +  %X = invoke i32 @callee()<br class="gmail_msg">
> +           to label %cont unwind label %Handler<br class="gmail_msg">
> +; CHECK-NOT: @callee<br class="gmail_msg">
> +; CHECK: invoke void @might_throw()<br class="gmail_msg">
> +; At this point we just check that the rest of the function does not 'resume'<br class="gmail_msg">
> +; at any point and instead the inlined resume is threaded into normal control<br class="gmail_msg">
> +; flow.<br class="gmail_msg">
> +; CHECK-NOT: resume<br class="gmail_msg">
><br class="gmail_msg">
> -cont:           ; preds = %0<br class="gmail_msg">
> -        ret i32 %X<br class="gmail_msg">
> +cont:<br class="gmail_msg">
> +  ret i32 %X<br class="gmail_msg">
><br class="gmail_msg">
> -Handler:                ; preds = %0<br class="gmail_msg">
> +Handler:<br class="gmail_msg">
> ; This consumes an exception thrown by might_throw<br class="gmail_msg">
> -        %exn = landingpad {i8*, i32}<br class="gmail_msg">
> -                 cleanup<br class="gmail_msg">
> -        ret i32 1<br class="gmail_msg">
> +  %exn = landingpad {i8*, i32}<br class="gmail_msg">
> +         cleanup<br class="gmail_msg">
> +  ret i32 1<br class="gmail_msg">
> }<br class="gmail_msg">
><br class="gmail_msg">
> declare i32 @__gxx_personality_v0(...)<br class="gmail_msg">
><br class="gmail_msg">
><br class="gmail_msg">
> _______________________________________________<br class="gmail_msg">
> llvm-commits mailing list<br class="gmail_msg">
> <a href="mailto:llvm-commits@lists.llvm.org" class="gmail_msg" target="_blank">llvm-commits@lists.llvm.org</a><br class="gmail_msg">
> <a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits" rel="noreferrer" class="gmail_msg" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits</a><br class="gmail_msg">
<br class="gmail_msg">
</blockquote></div>