r276361 - Reverting r275115 which caused PR28634.

Wolfgang Pieb via cfe-commits cfe-commits at lists.llvm.org
Thu Jul 21 16:28:19 PDT 2016


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.


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




More information about the cfe-commits mailing list