> On Jul 21, 2016, at 4:28 PM, Wolfgang Pieb via cfe-commits > <cfe-commits@lists.llvm.org> wrote: > > Author: wolfgangp > Date: Thu Jul 21 18:28:18 2016 > New Revision: 276361 > > URL: http://llvm.org/viewvc/llvm-project?rev=276361&view=rev > Log: > Reverting r275115 which caused PR28634. > When empty (forwarding) basic blocks that are referenced by user labels > are removed, incorrect code may be generated.
Can you add a non-regression test case? (It seems the test-suite didn’t catch this bug right?) Thanks, — Mehdi > > > Removed: > cfe/trunk/test/CodeGen/forwarding-blocks-if.c > Modified: > cfe/trunk/lib/CodeGen/CGStmt.cpp > > Modified: cfe/trunk/lib/CodeGen/CGStmt.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGStmt.cpp?rev=276361&r1=276360&r2=276361&view=diff > ============================================================================== > --- cfe/trunk/lib/CodeGen/CGStmt.cpp (original) > +++ cfe/trunk/lib/CodeGen/CGStmt.cpp Thu Jul 21 18:28:18 2016 > @@ -623,14 +623,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()) { > @@ -646,12 +639,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/trunk/test/CodeGen/forwarding-blocks-if.c > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/forwarding-blocks-if.c?rev=276360&view=auto > ============================================================================== > --- cfe/trunk/test/CodeGen/forwarding-blocks-if.c (original) > +++ cfe/trunk/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 > > > _______________________________________________ > cfe-commits mailing list > cfe-commits@lists.llvm.org > http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits