[PATCH] Add a test for LowerInvoke that doesn't use "-enable-correct-eh-support"

Rafael Espíndola rafael.espindola at gmail.com
Thu Mar 20 09:29:39 PDT 2014


btw, isn't all of LowerInvoke dead? It is only used with
ExceptionHandling::None. We could probably just produce an error in
that case.

On 19 March 2014 12:23, Mark Seaborn <mseaborn at chromium.org> wrote:
> Hi asl, rafael,
>
> Add a test for LowerInvoke that doesn't use "-enable-correct-eh-support"
>
> None of the existing tests for LowerInvoke check LowerInvoke's output,
> and all but one use "-enable-correct-eh-support", which is obsolete,
> so those tests will be removed when that option is removed.
>
> To make sure LowerInvoke will still have test coverage, this adds a
> test for its default mode which converts invokes to calls.
>
>
> http://llvm-reviews.chandlerc.com/D3124
>
> Files:
>   test/Transforms/LowerInvoke/lowerinvoke.ll
>
> Index: test/Transforms/LowerInvoke/lowerinvoke.ll
> ===================================================================
> --- /dev/null
> +++ test/Transforms/LowerInvoke/lowerinvoke.ll
> @@ -0,0 +1,25 @@
> +; RUN: opt < %s -lowerinvoke -S | FileCheck %s
> +
> +declare i32 @external_func(i64 %arg)
> +
> +define i32 @invoke_test(i64 %arg) {
> +entry:
> +  %result = invoke fastcc i32 @external_func(i64 inreg %arg)
> +      to label %cont unwind label %lpad
> +cont:
> +  ret i32 %result
> +lpad:
> +  %phi = phi i32 [ 99, %entry ]
> +  %lp = landingpad { i8*, i32 } personality i8* null cleanup
> +  ret i32 %phi
> +}
> +
> +; The "invoke" should be converted to a "call".
> +; CHECK-LABEL: define i32 @invoke_test
> +; CHECK: %result = call fastcc i32 @external_func(i64 inreg %arg)
> +; CHECK-NEXT: br label %cont
> +
> +; Note that this pass does not remove dead landingpad blocks.
> +; CHECK: lpad:
> +; CHECK-NOT: phi
> +; CHECK: landingpad



More information about the llvm-commits mailing list