Author: hans Date: Mon Jul 25 12:19:19 2016 New Revision: 276656 URL: http://llvm.org/viewvc/llvm-project?rev=276656&view=rev Log: Merging r276361: ------------------------------------------------------------------------ r276361 | wolfgangp | 2016-07-21 16:28:18 -0700 (Thu, 21 Jul 2016) | 5 lines
Reverting r275115 which caused PR28634. When empty (forwarding) basic blocks that are referenced by user labels are removed, incorrect code may be generated. ------------------------------------------------------------------------ Removed: cfe/branches/release_39/test/CodeGen/forwarding-blocks-if.c Modified: cfe/branches/release_39/ (props changed) cfe/branches/release_39/lib/CodeGen/CGStmt.cpp Propchange: cfe/branches/release_39/ ------------------------------------------------------------------------------ --- svn:mergeinfo (original) +++ svn:mergeinfo Mon Jul 25 12:19:19 2016 @@ -1,4 +1,4 @@ /cfe/branches/type-system-rewrite:134693-134817 -/cfe/trunk:275880,275967 +/cfe/trunk:275880,275967,276361 /cfe/trunk/test:170344 /cfe/trunk/test/SemaTemplate:126920 Modified: cfe/branches/release_39/lib/CodeGen/CGStmt.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/branches/release_39/lib/CodeGen/CGStmt.cpp?rev=276656&r1=276655&r2=276656&view=diff ============================================================================== --- cfe/branches/release_39/lib/CodeGen/CGStmt.cpp (original) +++ cfe/branches/release_39/lib/CodeGen/CGStmt.cpp Mon Jul 25 12:19:19 2016 @@ -620,14 +620,7 @@ void CodeGenFunction::EmitIfStmt(const I RunCleanupsScope ThenScope(*this); EmitStmt(S.getThen()); } - { - auto CurBlock = Builder.GetInsertBlock(); - EmitBranch(ContBlock); - // Eliminate any empty blocks that may have been created by nested - // control flow statements in the 'then' clause. - if (CurBlock) - SimplifyForwardingBlocks(CurBlock); - } + EmitBranch(ContBlock); // Emit the 'else' code if present. if (const Stmt *Else = S.getElse()) { @@ -643,12 +636,7 @@ void CodeGenFunction::EmitIfStmt(const I { // There is no need to emit line number for an unconditional branch. auto NL = ApplyDebugLocation::CreateEmpty(*this); - auto CurBlock = Builder.GetInsertBlock(); EmitBranch(ContBlock); - // Eliminate any empty blocks that may have been created by nested - // control flow statements emitted in the 'else' clause. - if (CurBlock) - SimplifyForwardingBlocks(CurBlock); } } Removed: cfe/branches/release_39/test/CodeGen/forwarding-blocks-if.c URL: http://llvm.org/viewvc/llvm-project/cfe/branches/release_39/test/CodeGen/forwarding-blocks-if.c?rev=276655&view=auto ============================================================================== --- cfe/branches/release_39/test/CodeGen/forwarding-blocks-if.c (original) +++ cfe/branches/release_39/test/CodeGen/forwarding-blocks-if.c (removed) @@ -1,36 +0,0 @@ -// RUN: %clang_cc1 %s -emit-llvm -o - | FileCheck %s -// Check that no empty blocks are generated for nested ifs. - -extern void func(); - -int f0(int val) { - if (val == 0) { - func(); - } else if (val == 1) { - func(); - } - return 0; -} - -// CHECK-LABEL: define {{.*}}i32 @f0 -// CHECK: call void {{.*}} @func -// CHECK: call void {{.*}} @func -// CHECK: br label %[[RETBLOCK1:[^ ]*]] -// CHECK: [[RETBLOCK1]]: -// CHECK-NOT: br label -// CHECK: ret i32 - -int f1(int val, int g) { - if (val == 0) - if (g == 1) { - func(); - } - return 0; -} - -// CHECK-LABEL: define {{.*}}i32 @f1 -// CHECK: call void {{.*}} @func -// CHECK: br label %[[RETBLOCK2:[^ ]*]] -// CHECK: [[RETBLOCK2]]: -// CHECK-NOT: br label -// CHECK: ret i32 _______________________________________________ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits