r276361 - Reverting r275115 which caused PR28634.
Mehdi Amini via cfe-commits
cfe-commits at lists.llvm.org
Thu Jul 21 17:31:19 PDT 2016
> On Jul 21, 2016, at 4:28 PM, Wolfgang Pieb via cfe-commits <cfe-commits at 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 at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
More information about the cfe-commits
mailing list