r235161 - [MS ABI] Use the right types for filter and finally blocks

David Majnemer david.majnemer at gmail.com
Thu Apr 16 23:57:25 PDT 2015


Author: majnemer
Date: Fri Apr 17 01:57:25 2015
New Revision: 235161

URL: http://llvm.org/viewvc/llvm-project?rev=235161&view=rev
Log:
[MS ABI] Use the right types for filter and finally blocks

The type for abnormal_termination can't be an i1, it an i8.
Filter functions return 'LONG', not 'int'.

Modified:
    cfe/trunk/lib/CodeGen/CGException.cpp
    cfe/trunk/test/CodeGen/exceptions-seh-finally.c
    cfe/trunk/test/CodeGen/exceptions-seh-leave.c
    cfe/trunk/test/CodeGen/exceptions-seh.c
    cfe/trunk/test/CodeGenCXX/exceptions-seh.cpp

Modified: cfe/trunk/lib/CodeGen/CGException.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGException.cpp?rev=235161&r1=235160&r2=235161&view=diff
==============================================================================
--- cfe/trunk/lib/CodeGen/CGException.cpp (original)
+++ cfe/trunk/lib/CodeGen/CGException.cpp Fri Apr 17 01:57:25 2015
@@ -1305,7 +1305,7 @@ struct PerformSEHFinally : EHScopeStack:
 
   void Emit(CodeGenFunction &CGF, Flags F) override {
     ASTContext &Context = CGF.getContext();
-    QualType ArgTys[2] = {Context.BoolTy, Context.VoidPtrTy};
+    QualType ArgTys[2] = {Context.UnsignedCharTy, Context.VoidPtrTy};
     FunctionProtoType::ExtProtoInfo EPI;
     const auto *FTP = cast<FunctionType>(
         Context.getFunctionType(Context.VoidTy, ArgTys, EPI));
@@ -1502,7 +1502,8 @@ CodeGenFunction::GenerateSEHFilterFuncti
     CGM.getCXXABI().getMangleContext().mangleSEHFilterExpression(Parent, OS);
   }
 
-  startOutlinedSEHHelper(ParentCGF, Name, getContext().IntTy, Args, FilterExpr);
+  startOutlinedSEHHelper(ParentCGF, Name, getContext().LongTy, Args,
+                         FilterExpr);
 
   // Mark finally block calls as nounwind and noinline to make LLVM's job a
   // little easier.
@@ -1514,7 +1515,7 @@ CodeGenFunction::GenerateSEHFilterFuncti
 
   // Emit the original filter expression, convert to i32, and return.
   llvm::Value *R = EmitScalarExpr(FilterExpr);
-  R = Builder.CreateIntCast(R, CGM.IntTy,
+  R = Builder.CreateIntCast(R, ConvertType(getContext().LongTy),
                             FilterExpr->getType()->isSignedIntegerType());
   Builder.CreateStore(R, ReturnValue);
 
@@ -1532,7 +1533,8 @@ CodeGenFunction::GenerateSEHFinallyFunct
   FunctionArgList Args;
   Args.push_back(ImplicitParamDecl::Create(
       getContext(), nullptr, StartLoc,
-      &getContext().Idents.get("abnormal_termination"), getContext().BoolTy));
+      &getContext().Idents.get("abnormal_termination"),
+      getContext().UnsignedCharTy));
   Args.push_back(ImplicitParamDecl::Create(
       getContext(), nullptr, StartLoc,
       &getContext().Idents.get("frame_pointer"), getContext().VoidPtrTy));

Modified: cfe/trunk/test/CodeGen/exceptions-seh-finally.c
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/exceptions-seh-finally.c?rev=235161&r1=235160&r2=235161&view=diff
==============================================================================
--- cfe/trunk/test/CodeGen/exceptions-seh-finally.c (original)
+++ cfe/trunk/test/CodeGen/exceptions-seh-finally.c Fri Apr 17 01:57:25 2015
@@ -18,17 +18,17 @@ void basic_finally(void) {
 //
 // CHECK: [[invoke_cont]]
 // CHECK: %[[fp:[^ ]*]] = call i8* @llvm.frameaddress(i32 0)
-// CHECK: call void @"\01?fin$0 at 0@basic_finally@@"(i1 zeroext false, i8* %[[fp]])
+// CHECK: call void @"\01?fin$0 at 0@basic_finally@@"(i8 0, i8* %[[fp]])
 // CHECK-NEXT: ret void
 //
 // CHECK: [[lpad]]
 // CHECK-NEXT: landingpad
 // CHECK-NEXT: cleanup
 // CHECK: %[[fp:[^ ]*]] = call i8* @llvm.frameaddress(i32 0)
-// CHECK: call void @"\01?fin$0 at 0@basic_finally@@"(i1 zeroext true, i8* %[[fp]])
+// CHECK: call void @"\01?fin$0 at 0@basic_finally@@"(i8 1, i8* %[[fp]])
 // CHECK: resume { i8*, i32 }
 
-// CHECK: define internal void @"\01?fin$0 at 0@basic_finally@@"(i1 zeroext %abnormal_termination, i8* %frame_pointer)
+// CHECK: define internal void @"\01?fin$0 at 0@basic_finally@@"(i8 %abnormal_termination, i8* %frame_pointer)
 // CHECK: call void @cleanup()
 
 // Mostly check that we don't double emit 'r' which would crash.
@@ -58,10 +58,10 @@ l:
 //
 // CHECK: [[invoke_cont]]
 // CHECK: %[[fp:[^ ]*]] = call i8* @llvm.frameaddress(i32 0)
-// CHECK: call void @"\01?fin$0 at 0@label_in_finally@@"(i1 zeroext false, i8* %[[fp]])
+// CHECK: call void @"\01?fin$0 at 0@label_in_finally@@"(i8 0, i8* %[[fp]])
 // CHECK: ret void
 
-// CHECK: define internal void @"\01?fin$0 at 0@label_in_finally@@"(i1 zeroext %abnormal_termination, i8* %frame_pointer)
+// CHECK: define internal void @"\01?fin$0 at 0@label_in_finally@@"(i8 %abnormal_termination, i8* %frame_pointer)
 // CHECK: br label %[[l:[^ ]*]]
 //
 // CHECK: [[l]]
@@ -85,18 +85,18 @@ void use_abnormal_termination(void) {
 //
 // CHECK: [[invoke_cont]]
 // CHECK: %[[fp:[^ ]*]] = call i8* @llvm.frameaddress(i32 0)
-// CHECK: call void @"\01?fin$0 at 0@use_abnormal_termination@@"(i1 zeroext false, i8* %[[fp]])
+// CHECK: call void @"\01?fin$0 at 0@use_abnormal_termination@@"(i8 0, i8* %[[fp]])
 // CHECK: ret void
 //
 // CHECK: [[lpad]]
 // CHECK-NEXT: landingpad
 // CHECK-NEXT: cleanup
 // CHECK: %[[fp:[^ ]*]] = call i8* @llvm.frameaddress(i32 0)
-// CHECK: call void @"\01?fin$0 at 0@use_abnormal_termination@@"(i1 zeroext true, i8* %[[fp]])
+// CHECK: call void @"\01?fin$0 at 0@use_abnormal_termination@@"(i8 1, i8* %[[fp]])
 // CHECK: resume { i8*, i32 }
 
-// CHECK: define internal void @"\01?fin$0 at 0@use_abnormal_termination@@"(i1 zeroext %abnormal_termination, i8* %frame_pointer)
-// CHECK: %[[abnormal_zext:[^ ]*]] = zext i1 %abnormal_termination to i32
+// CHECK: define internal void @"\01?fin$0 at 0@use_abnormal_termination@@"(i8 %abnormal_termination, i8* %frame_pointer)
+// CHECK: %[[abnormal_zext:[^ ]*]] = zext i8 %abnormal_termination to i32
 // CHECK: store i32 %[[abnormal_zext]], i32* @crashed
 // CHECK-NEXT: ret void
 
@@ -110,10 +110,10 @@ void noreturn_noop_finally() {
 
 // CHECK-LABEL: define void @noreturn_noop_finally()
 // CHECK: %[[fp:[^ ]*]] = call i8* @llvm.frameaddress(i32 0)
-// CHECK: call void @"\01?fin$0 at 0@noreturn_noop_finally@@"(i1 zeroext false, i8* %[[fp]])
+// CHECK: call void @"\01?fin$0 at 0@noreturn_noop_finally@@"(i8 0, i8* %[[fp]])
 // CHECK: ret void
 
-// CHECK: define internal void @"\01?fin$0 at 0@noreturn_noop_finally@@"(i1 zeroext %abnormal_termination, i8* %frame_pointer)
+// CHECK: define internal void @"\01?fin$0 at 0@noreturn_noop_finally@@"(i8 %abnormal_termination, i8* %frame_pointer)
 // CHECK: call void @abort()
 // CHECK: unreachable
 
@@ -131,17 +131,17 @@ void noreturn_finally() {
 //
 // CHECK: [[cont]]
 // CHECK: %[[fp:[^ ]*]] = call i8* @llvm.frameaddress(i32 0)
-// CHECK: call void @"\01?fin$0 at 0@noreturn_finally@@"(i1 zeroext false, i8* %[[fp]])
+// CHECK: call void @"\01?fin$0 at 0@noreturn_finally@@"(i8 0, i8* %[[fp]])
 // CHECK: ret void
 //
 // CHECK: [[lpad]]
 // CHECK: landingpad
 // CHECK-NEXT: cleanup
 // CHECK: %[[fp:[^ ]*]] = call i8* @llvm.frameaddress(i32 0)
-// CHECK: call void @"\01?fin$0 at 0@noreturn_finally@@"(i1 zeroext true, i8* %[[fp]])
+// CHECK: call void @"\01?fin$0 at 0@noreturn_finally@@"(i8 1, i8* %[[fp]])
 // CHECK: resume { i8*, i32 }
 
-// CHECK: define internal void @"\01?fin$0 at 0@noreturn_finally@@"(i1 zeroext %abnormal_termination, i8* %frame_pointer)
+// CHECK: define internal void @"\01?fin$0 at 0@noreturn_finally@@"(i8 %abnormal_termination, i8* %frame_pointer)
 // CHECK: call void @abort()
 // CHECK: unreachable
 
@@ -153,10 +153,10 @@ int finally_with_return() {
 }
 // CHECK-LABEL: define i32 @finally_with_return()
 // CHECK: %[[fp:[^ ]*]] = call i8* @llvm.frameaddress(i32 0)
-// CHECK-NEXT: call void @"\01?fin$0 at 0@finally_with_return@@"(i1 zeroext false, i8* %[[fp]])
+// CHECK-NEXT: call void @"\01?fin$0 at 0@finally_with_return@@"(i8 0, i8* %[[fp]])
 // CHECK-NEXT: ret i32 42
 
-// CHECK: define internal void @"\01?fin$0 at 0@finally_with_return@@"(i1 zeroext %abnormal_termination, i8* %frame_pointer)
+// CHECK: define internal void @"\01?fin$0 at 0@finally_with_return@@"(i8 %abnormal_termination, i8* %frame_pointer)
 // CHECK-NOT: br i1
 // CHECK-NOT: br label
 // CHECK: ret void
@@ -175,24 +175,24 @@ int nested___finally___finally() {
 
 // CHECK-LABEL: define i32 @nested___finally___finally
 // CHECK: %[[fp:[^ ]*]] = call i8* @llvm.frameaddress(i32 0)
-// CHECK: invoke void @"\01?fin$1 at 0@nested___finally___finally@@"(i1 zeroext false, i8* %[[fp]])
+// CHECK: invoke void @"\01?fin$1 at 0@nested___finally___finally@@"(i8 0, i8* %[[fp]])
 // CHECK:          to label %[[outercont:[^ ]*]] unwind label %[[lpad:[^ ]*]]
 //
 // CHECK: [[outercont]]
 // CHECK-NEXT: %[[fp:[^ ]*]] = call i8* @llvm.frameaddress(i32 0)
-// CHECK-NEXT: call void @"\01?fin$0 at 0@nested___finally___finally@@"(i1 zeroext false, i8* %[[fp]])
+// CHECK-NEXT: call void @"\01?fin$0 at 0@nested___finally___finally@@"(i8 0, i8* %[[fp]])
 // CHECK-NEXT: ret i32 0
 //
 // CHECK: [[lpad]]
 // CHECK-NEXT: landingpad
 // CHECK-NEXT: cleanup
 // CHECK: %[[fp:[^ ]*]] = call i8* @llvm.frameaddress(i32 0)
-// CHECK-NEXT: call void @"\01?fin$0 at 0@nested___finally___finally@@"(i1 zeroext true, i8* %[[fp]])
+// CHECK-NEXT: call void @"\01?fin$0 at 0@nested___finally___finally@@"(i8 1, i8* %[[fp]])
 
-// CHECK-LABEL: define internal void @"\01?fin$0 at 0@nested___finally___finally@@"(i1 zeroext %abnormal_termination, i8* %frame_pointer)
+// CHECK-LABEL: define internal void @"\01?fin$0 at 0@nested___finally___finally@@"(i8 %abnormal_termination, i8* %frame_pointer)
 // CHECK: ret void
 
-// CHECK-LABEL: define internal void @"\01?fin$1 at 0@nested___finally___finally@@"(i1 zeroext %abnormal_termination, i8* %frame_pointer)
+// CHECK-LABEL: define internal void @"\01?fin$1 at 0@nested___finally___finally@@"(i8 %abnormal_termination, i8* %frame_pointer)
 // CHECK: unreachable
 
 int nested___finally___finally_with_eh_edge() {
@@ -213,30 +213,30 @@ int nested___finally___finally_with_eh_e
 //
 // [[invokecont]]
 // CHECK: %[[fp:[^ ]*]] = call i8* @llvm.frameaddress(i32 0)
-// CHECK: invoke void @"\01?fin$1 at 0@nested___finally___finally_with_eh_edge@@"(i1 zeroext false, i8* %[[fp]])
+// CHECK: invoke void @"\01?fin$1 at 0@nested___finally___finally_with_eh_edge@@"(i8 0, i8* %[[fp]])
 // CHECK:          to label %[[outercont:[^ ]*]] unwind label %[[lpad2:[^ ]*]]
 //
 // CHECK: [[outercont]]
 // CHECK-NEXT: %[[fp:[^ ]*]] = call i8* @llvm.frameaddress(i32 0)
-// CHECK-NEXT: call void @"\01?fin$0 at 0@nested___finally___finally_with_eh_edge@@"(i1 zeroext false, i8* %[[fp]])
+// CHECK-NEXT: call void @"\01?fin$0 at 0@nested___finally___finally_with_eh_edge@@"(i8 0, i8* %[[fp]])
 // CHECK-NEXT: ret i32 912
 //
 // CHECK: [[lpad1]]
 // CHECK-NEXT: landingpad
 // CHECK-NEXT: cleanup
 // CHECK: %[[fp:[^ ]*]] = call i8* @llvm.frameaddress(i32 0)
-// CHECK: invoke void @"\01?fin$1 at 0@nested___finally___finally_with_eh_edge@@"(i1 zeroext true, i8* %[[fp]])
+// CHECK: invoke void @"\01?fin$1 at 0@nested___finally___finally_with_eh_edge@@"(i8 1, i8* %[[fp]])
 // CHECK:          to label %[[outercont:[^ ]*]] unwind label %[[lpad2]]
 //
 // CHECK: [[lpad2]]
 // CHECK-NEXT: landingpad
 // CHECK-NEXT: cleanup
 // CHECK: %[[fp:[^ ]*]] = call i8* @llvm.frameaddress(i32 0)
-// CHECK: call void @"\01?fin$0 at 0@nested___finally___finally_with_eh_edge@@"(i1 zeroext true, i8* %[[fp]])
+// CHECK: call void @"\01?fin$0 at 0@nested___finally___finally_with_eh_edge@@"(i8 1, i8* %[[fp]])
 // CHECK: resume
 
-// CHECK-LABEL: define internal void @"\01?fin$0 at 0@nested___finally___finally_with_eh_edge@@"(i1 zeroext %abnormal_termination, i8* %frame_pointer)
+// CHECK-LABEL: define internal void @"\01?fin$0 at 0@nested___finally___finally_with_eh_edge@@"(i8 %abnormal_termination, i8* %frame_pointer)
 // CHECK: ret void
 
-// CHECK-LABEL: define internal void @"\01?fin$1 at 0@nested___finally___finally_with_eh_edge@@"(i1 zeroext %abnormal_termination, i8* %frame_pointer)
+// CHECK-LABEL: define internal void @"\01?fin$1 at 0@nested___finally___finally_with_eh_edge@@"(i8 %abnormal_termination, i8* %frame_pointer)
 // CHECK: unreachable

Modified: cfe/trunk/test/CodeGen/exceptions-seh-leave.c
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/exceptions-seh-leave.c?rev=235161&r1=235160&r2=235161&view=diff
==============================================================================
--- cfe/trunk/test/CodeGen/exceptions-seh-leave.c (original)
+++ cfe/trunk/test/CodeGen/exceptions-seh-leave.c Fri Apr 17 01:57:25 2015
@@ -75,7 +75,7 @@ int __leave_with___finally_simple() {
 // CHECK-NOT: store i32 23
 // CHECK: [[tryleave]]
 // CHECK-NEXT: %[[fp:[^ ]*]] = call i8* @llvm.frameaddress(i32 0)
-// CHECK-NEXT: call void @"\01?fin$0 at 0@__leave_with___finally_simple@@"(i1 zeroext false, i8* %[[fp]])
+// CHECK-NEXT: call void @"\01?fin$0 at 0@__leave_with___finally_simple@@"(i8 0, i8* %[[fp]])
 
 // __finally block doesn't return, __finally.cont doesn't exist.
 int __leave_with___finally_noreturn() {
@@ -95,7 +95,7 @@ int __leave_with___finally_noreturn() {
 // CHECK-NOT: store i32 23
 // CHECK: [[tryleave]]
 // CHECK-NEXT: %[[fp:[^ ]*]] = call i8* @llvm.frameaddress(i32 0)
-// CHECK-NEXT: call void @"\01?fin$0 at 0@__leave_with___finally_noreturn@@"(i1 zeroext false, i8* %[[fp]])
+// CHECK-NEXT: call void @"\01?fin$0 at 0@__leave_with___finally_noreturn@@"(i8 0, i8* %[[fp]])
 
 // The "normal" case.
 int __leave_with___finally() {
@@ -119,7 +119,7 @@ int __leave_with___finally() {
 // CHECK-NOT: store i32 23
 // CHECK: [[tryleave]]
 // CHECK-NEXT: %[[fp:[^ ]*]] = call i8* @llvm.frameaddress(i32 0)
-// CHECK-NEXT: call void @"\01?fin$0 at 0@__leave_with___finally@@"(i1 zeroext false, i8* %[[fp]])
+// CHECK-NEXT: call void @"\01?fin$0 at 0@__leave_with___finally@@"(i8 0, i8* %[[fp]])
 
 
 //////////////////////////////////////////////////////////////////////////////
@@ -149,7 +149,7 @@ int nested___except___finally() {
 
 // CHECK: [[g1_cont1]]
 // CHECK-NEXT: %[[fp:[^ ]*]] = call i8* @llvm.frameaddress(i32 0)
-// CHECK-NEXT: invoke void @"\01?fin$0 at 0@nested___except___finally@@"(i1 zeroext false, i8* %[[fp]])
+// CHECK-NEXT: invoke void @"\01?fin$0 at 0@nested___except___finally@@"(i8 0, i8* %[[fp]])
 // CHECK-NEXT:       to label %[[fin_cont:.*]] unwind label %[[g2_lpad:.*]]
 
 // CHECK: [[fin_cont]]
@@ -160,7 +160,7 @@ int nested___except___finally() {
 // CHECK-NEXT: landingpad
 // CHECK-NEXT: catch i8* null
 // CHECK: %[[fp:[^ ]*]] = call i8* @llvm.frameaddress(i32 0)
-// CHECK-NEXT: invoke void @"\01?fin$0 at 0@nested___except___finally@@"(i1 zeroext true, i8* %[[fp]])
+// CHECK-NEXT: invoke void @"\01?fin$0 at 0@nested___except___finally@@"(i8 1, i8* %[[fp]])
 // CHECK-NEXT:       to label %[[g1_resume:.*]] unwind label %[[g2_lpad]]
 
 // CHECK: [[g2_lpad]]
@@ -169,7 +169,7 @@ int nested___except___finally() {
 // CHECK: [[trycont]]
 // CHECK-NEXT: ret i32 1
 
-// CHECK-LABEL: define internal void @"\01?fin$0 at 0@nested___except___finally@@"(i1 zeroext %abnormal_termination, i8* %frame_pointer)
+// CHECK-LABEL: define internal void @"\01?fin$0 at 0@nested___except___finally@@"(i8 %abnormal_termination, i8* %frame_pointer)
 // CHECK: call void @g()
 // CHECK: unreachable
 
@@ -267,7 +267,7 @@ int nested___finally___except() {
 
 // CHECK: [[g2_lpad]]
 // CHECK: %[[fp:[^ ]*]] = call i8* @llvm.frameaddress(i32 0)
-// CHECK-NEXT: call void @"\01?fin$0 at 0@nested___finally___except@@"(i1 zeroext true, i8* %[[fp]])
+// CHECK-NEXT: call void @"\01?fin$0 at 0@nested___finally___except@@"(i8 1, i8* %[[fp]])
 // CHECK-NEXT: br label %[[ehresume:[^ ]*]]
 
 // CHECK: [[trycont]]
@@ -276,13 +276,13 @@ int nested___finally___except() {
 
 // CHECK: [[tryleave]]
 // CHECK: %[[fp:[^ ]*]] = call i8* @llvm.frameaddress(i32 0)
-// CHECK-NEXT: call void @"\01?fin$0 at 0@nested___finally___except@@"(i1 zeroext false, i8* %[[fp]])
+// CHECK-NEXT: call void @"\01?fin$0 at 0@nested___finally___except@@"(i8 0, i8* %[[fp]])
 // CHECK-NEXT: ret i32 1
 
 // CHECK: [[ehresume]]
 // CHECK: resume
 
-// CHECK-LABEL: define internal void @"\01?fin$0 at 0@nested___finally___except@@"(i1 zeroext %abnormal_termination, i8* %frame_pointer)
+// CHECK-LABEL: define internal void @"\01?fin$0 at 0@nested___finally___except@@"(i8 %abnormal_termination, i8* %frame_pointer)
 // CHECK: ret void
 
 int nested___finally___finally() {
@@ -312,20 +312,20 @@ int nested___finally___finally() {
 // CHECK: [[g1_cont]]
 // CHECK: store i32 16, i32* %[[myres:[^ ]*]],
 // CHECK: %[[fp:[^ ]*]] = call i8* @llvm.frameaddress(i32 0)
-// CHECK-NEXT: invoke void @"\01?fin$1 at 0@nested___finally___finally@@"(i1 zeroext false, i8* %[[fp]])
+// CHECK-NEXT: invoke void @"\01?fin$1 at 0@nested___finally___finally@@"(i8 0, i8* %[[fp]])
 // CHECK-NEXT:       to label %[[finally_cont:.*]] unwind label %[[g2_lpad:.*]]
 
 // CHECK: [[finally_cont]]
 // CHECK: store i32 51, i32* %[[myres]]
 // CHECK: %[[fp:[^ ]*]] = call i8* @llvm.frameaddress(i32 0)
-// CHECK-NEXT: call void @"\01?fin$0 at 0@nested___finally___finally@@"(i1 zeroext false, i8* %[[fp]])
+// CHECK-NEXT: call void @"\01?fin$0 at 0@nested___finally___finally@@"(i8 0, i8* %[[fp]])
 // CHECK-NEXT: ret i32 1
 
 // CHECK: [[g1_lpad]]
 // CHECK-NEXT: landingpad
 // CHECK-NEXT: cleanup
 // CHECK: %[[fp:[^ ]*]] = call i8* @llvm.frameaddress(i32 0)
-// CHECK-NEXT: invoke void @"\01?fin$1 at 0@nested___finally___finally@@"(i1 zeroext true, i8* %[[fp]])
+// CHECK-NEXT: invoke void @"\01?fin$1 at 0@nested___finally___finally@@"(i8 1, i8* %[[fp]])
 // CHECK-NEXT:       to label %[[finally_cont2:.*]] unwind label %[[g2_lpad]]
 
 // CHECK: [[g2_lpad]]
@@ -338,12 +338,12 @@ int nested___finally___finally() {
 
 // CHECK: [[ehcleanup]]
 // CHECK: %[[fp:[^ ]*]] = call i8* @llvm.frameaddress(i32 0)
-// CHECK-NEXT: call void @"\01?fin$0 at 0@nested___finally___finally@@"(i1 zeroext true, i8* %[[fp]])
+// CHECK-NEXT: call void @"\01?fin$0 at 0@nested___finally___finally@@"(i8 1, i8* %[[fp]])
 // CHECK: resume
 
-// CHECK-LABEL: define internal void @"\01?fin$0 at 0@nested___finally___finally@@"(i1 zeroext %abnormal_termination, i8* %frame_pointer)
+// CHECK-LABEL: define internal void @"\01?fin$0 at 0@nested___finally___finally@@"(i8 %abnormal_termination, i8* %frame_pointer)
 // CHECK: ret void
 
-// CHECK-LABEL: define internal void @"\01?fin$1 at 0@nested___finally___finally@@"(i1 zeroext %abnormal_termination, i8* %frame_pointer)
+// CHECK-LABEL: define internal void @"\01?fin$1 at 0@nested___finally___finally@@"(i8 %abnormal_termination, i8* %frame_pointer)
 // CHECK: call void @g()
 // CHECK: unreachable

Modified: cfe/trunk/test/CodeGen/exceptions-seh.c
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/exceptions-seh.c?rev=235161&r1=235160&r2=235161&view=diff
==============================================================================
--- cfe/trunk/test/CodeGen/exceptions-seh.c (original)
+++ cfe/trunk/test/CodeGen/exceptions-seh.c Fri Apr 17 01:57:25 2015
@@ -137,17 +137,17 @@ void basic_finally(void) {
 //
 // CHECK: [[cont]]
 // CHECK: %[[fp:[^ ]*]] = call i8* @llvm.frameaddress(i32 0)
-// CHECK: call void @"\01?fin$0 at 0@basic_finally@@"(i1 zeroext false, i8* %[[fp]])
+// CHECK: call void @"\01?fin$0 at 0@basic_finally@@"(i8 0, i8* %[[fp]])
 // CHECK: ret void
 //
 // CHECK: [[lpad]]
 // CHECK: landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__C_specific_handler to i8*)
 // CHECK-NEXT: cleanup
 // CHECK: %[[fp:[^ ]*]] = call i8* @llvm.frameaddress(i32 0)
-// CHECK: call void @"\01?fin$0 at 0@basic_finally@@"(i1 zeroext true, i8* %[[fp]])
+// CHECK: call void @"\01?fin$0 at 0@basic_finally@@"(i8 1, i8* %[[fp]])
 // CHECK: resume
 
-// CHECK: define internal void @"\01?fin$0 at 0@basic_finally@@"(i1 zeroext %abnormal_termination, i8* %frame_pointer)
+// CHECK: define internal void @"\01?fin$0 at 0@basic_finally@@"(i8 %abnormal_termination, i8* %frame_pointer)
 // CHECK:   load i32, i32* @g, align 4
 // CHECK:   add i32 %{{.*}}, -1
 // CHECK:   store i32 %{{.*}}, i32* @g, align 4

Modified: cfe/trunk/test/CodeGenCXX/exceptions-seh.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCXX/exceptions-seh.cpp?rev=235161&r1=235160&r2=235161&view=diff
==============================================================================
--- cfe/trunk/test/CodeGenCXX/exceptions-seh.cpp (original)
+++ cfe/trunk/test/CodeGenCXX/exceptions-seh.cpp Fri Apr 17 01:57:25 2015
@@ -123,20 +123,20 @@ void use_inline() {
 // CHECK: invoke void @might_throw()
 //
 // CHECK: %[[fp:[^ ]*]] = call i8* @llvm.frameaddress(i32 0)
-// CHECK: call void @"\01?fin$0 at 0@use_seh_in_inline_func@@"(i1 zeroext false, i8* %[[fp]])
+// CHECK: call void @"\01?fin$0 at 0@use_seh_in_inline_func@@"(i8 0, i8* %[[fp]])
 // CHECK: ret void
 //
 // CHECK: landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__C_specific_handler to i8*)
 // CHECK-NEXT: cleanup
 // CHECK: %[[fp:[^ ]*]] = call i8* @llvm.frameaddress(i32 0)
-// CHECK: call void @"\01?fin$0 at 0@use_seh_in_inline_func@@"(i1 zeroext true, i8* %[[fp]])
+// CHECK: call void @"\01?fin$0 at 0@use_seh_in_inline_func@@"(i8 1, i8* %[[fp]])
 
 // CHECK-LABEL: define internal i32 @"\01?filt$0 at 0@use_seh_in_inline_func@@"(i8* %exception_pointers, i8* %frame_pointer) #{{[0-9]+}} comdat($use_seh_in_inline_func)
 // CHECK: icmp eq i32 %{{.*}}, 424242
 // CHECK: zext i1 %{{.*}} to i32
 // CHECK: ret i32
 
-// CHECK-LABEL: define internal void @"\01?fin$0 at 0@use_seh_in_inline_func@@"(i1 zeroext %abnormal_termination, i8* %frame_pointer) #{{[0-9]+}} comdat($use_seh_in_inline_func)
+// CHECK-LABEL: define internal void @"\01?fin$0 at 0@use_seh_in_inline_func@@"(i8 %abnormal_termination, i8* %frame_pointer) #{{[0-9]+}} comdat($use_seh_in_inline_func)
 // CHECK: store i32 1234, i32* @my_unique_global
 
 // CHECK: attributes #[[NOINLINE]] = { {{.*noinline.*}} }





More information about the cfe-commits mailing list