forked from OSchip/llvm-project
MachineBlockPlacement would prefer that clang lay out blocks in source order.
llvm-svn: 159215
This commit is contained in:
parent
3563c28ab2
commit
18e3dfc547
|
@ -0,0 +1,40 @@
|
|||
// RUN: %clang_cc1 %s -O3 -emit-llvm -o - | FileCheck %s
|
||||
//
|
||||
// PR13214
|
||||
// No assumption may be made about the order that a frontend emits branch
|
||||
// targets (basic blocks). However, the backend's basic block layout makes an
|
||||
// attempt to preserve source order of control flow, and any bias toward source
|
||||
// order must start with the frontend.
|
||||
//
|
||||
// Note that the frontend inverts branches to simplify the condition, so the
|
||||
// order of a branch instruction's labels cannot be used as a source order bias.
|
||||
|
||||
void calla();
|
||||
void callb();
|
||||
void callc();
|
||||
|
||||
// CHECK: @test
|
||||
// CHECK: @calla()
|
||||
// CHECK: @callb()
|
||||
// CHECK: @callc()
|
||||
// CHECK: ret void
|
||||
void test1(int a) {
|
||||
if (a)
|
||||
calla();
|
||||
else
|
||||
callb();
|
||||
callc();
|
||||
}
|
||||
|
||||
// CHECK: @test
|
||||
// CHECK: @callb()
|
||||
// CHECK: @calla()
|
||||
// CHECK: @callc()
|
||||
// CHECK: ret void
|
||||
void test2(int a) {
|
||||
if (!a)
|
||||
callb();
|
||||
else
|
||||
calla();
|
||||
callc();
|
||||
}
|
Loading…
Reference in New Issue