From 8ae5f645e78b086ced0a6bc99b9bd07205cdb73e Mon Sep 17 00:00:00 2001 From: Reid Kleckner Date: Fri, 11 Sep 2015 17:27:52 +0000 Subject: [PATCH] [IR] Print the label operands of a catchpad like an invoke The rest of the EH pads are fine, since they have at most one label and take fewer operands for the personality. Old catchpad vs. new: %5 = catchpad [i8* bitcast (i32 ()* @"\01?filt$0@0@main@@" to i8*)] to label %__except.ret.10 unwind label %catchendblock.9 ----- %5 = catchpad [i8* bitcast (i32 ()* @"\01?filt$0@0@main@@" to i8*)] to label %__except.ret.10 unwind label %catchendblock.9 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@247433 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/IR/AsmWriter.cpp | 2 +- test/Bitcode/compatibility.ll | 12 ++++++++---- test/CodeGen/WinEH/wineh-cloning.ll | 9 ++++++--- test/Transforms/SimplifyCFG/empty-cleanuppad.ll | 3 ++- 4 files changed, 17 insertions(+), 9 deletions(-) diff --git a/lib/IR/AsmWriter.cpp b/lib/IR/AsmWriter.cpp index 2f00da8ea40..3aeabf8bf17 100644 --- a/lib/IR/AsmWriter.cpp +++ b/lib/IR/AsmWriter.cpp @@ -2847,7 +2847,7 @@ void AssemblyWriter::printInstruction(const Instruction &I) { Out << ", "; writeOperand(CPI->getArgOperand(Op), /*PrintType=*/true); } - Out << "] to "; + Out << "]\n to "; writeOperand(CPI->getNormalDest(), /*PrintType=*/true); Out << " unwind "; writeOperand(CPI->getUnwindDest(), /*PrintType=*/true); diff --git a/test/Bitcode/compatibility.ll b/test/Bitcode/compatibility.ll index 400d4a4001e..9c4c958c985 100644 --- a/test/Bitcode/compatibility.ll +++ b/test/Bitcode/compatibility.ll @@ -773,15 +773,18 @@ entry: catchpad1: catchpad [] to label %normal unwind label %exn.1 - ; CHECK: catchpad [] to label %normal unwind label %exn.1 + ; CHECK: catchpad [] + ; CHECK-NEXT: to label %normal unwind label %exn.1 catchpad2: catchpad [i32* %arg1] to label %normal unwind label %exn.2 - ; CHECK: catchpad [i32* %arg1] to label %normal unwind label %exn.2 + ; CHECK: catchpad [i32* %arg1] + ; CHECK-NEXT: to label %normal unwind label %exn.2 catchpad3: catchpad [i32* %arg1, i32* %arg2] to label %normal unwind label %exn.3 - ; CHECK: catchpad [i32* %arg1, i32* %arg2] to label %normal unwind label %exn.3 + ; CHECK: catchpad [i32* %arg1, i32* %arg2] + ; CHECK-NEXT: to label %normal unwind label %exn.3 exn.1: catchendpad unwind label %terminate.1 @@ -835,7 +838,8 @@ cleanup: catchpad: %catch = catchpad [] to label %body unwind label %catchend - ; CHECK: %catch = catchpad [] to label %body unwind label %catchend + ; CHECK: %catch = catchpad [] + ; CHECK-NEXT: to label %body unwind label %catchend body: invoke void @f.ccc() to label %continue unwind label %catchend diff --git a/test/CodeGen/WinEH/wineh-cloning.ll b/test/CodeGen/WinEH/wineh-cloning.ll index f7fe58f844f..4500f96e6f6 100644 --- a/test/CodeGen/WinEH/wineh-cloning.ll +++ b/test/CodeGen/WinEH/wineh-cloning.ll @@ -33,7 +33,8 @@ endcatch: ; CHECK: invoke void @f() ; CHECK: to label %[[EntryCopy:[^ ]+]] unwind label %catch ; CHECK: catch: -; CHECK: catchpad [] to label %[[CatchCopy:[^ ]+]] unwind +; CHECK: catchpad [] +; CHECK-NEXT: to label %[[CatchCopy:[^ ]+]] unwind ; CHECK: [[CatchCopy]]: ; CHECK: [[LoadX2:%[^ ]+]] = load i32, i32* [[Slot]] ; CHECK: call void @h(i32 [[LoadX2]] @@ -96,7 +97,8 @@ exit: ; CHECK: invoke void @f() ; CHECK: to label %[[exit:[^ ]+]] unwind ; CHECK: catch: -; CHECK: catchpad [] to label %[[shared:[^ ]+]] unwind +; CHECK: catchpad [] +; CHECK-NEXT: to label %[[shared:[^ ]+]] unwind ; CHECK: cleanup: ; CHECK: cleanuppad [] ; CHECK: call void @f() @@ -411,7 +413,8 @@ unreachable: ; CHECK-NEXT: %cleanup = cleanuppad ; CHECK-NEXT: cleanupret %cleanup unwind label %outer ; CHECK: outer: -; CHECK-NEXT: %catch = catchpad [] to label %catch.body unwind label %endpad +; CHECK-NEXT: %catch = catchpad [] +; CHECK-NEXT: to label %catch.body unwind label %endpad ; CHECK: catch.body: ; CHECK-NEXT: catchret %catch to label %exit ; CHECK: endpad: diff --git a/test/Transforms/SimplifyCFG/empty-cleanuppad.ll b/test/Transforms/SimplifyCFG/empty-cleanuppad.ll index 41d8678ef4f..def86e162c3 100644 --- a/test/Transforms/SimplifyCFG/empty-cleanuppad.ll +++ b/test/Transforms/SimplifyCFG/empty-cleanuppad.ll @@ -126,7 +126,8 @@ ehcleanup.1: ; preds = %catchendblock ; CHECK: invoke void @g() ; CHECK: to label %try.cont unwind label %catch.dispatch ; CHECK: catch.dispatch: -; CHECK: catchpad [i8* null, i8* null] to label %catch unwind label %catchendblock +; CHECK: catchpad [i8* null, i8* null] +; CHECK-NEXT: to label %catch unwind label %catchendblock ; CHECK: catch: ; CHECK: catchret ; CHECK: catchendblock: -- 2.34.1