forked from OSchip/llvm-project
Update the stack coloring pass to remove lifetime intrinsics in the optnone/opt-bisect skip case.
Differential Revision: http://reviews.llvm.org/D20453 llvm-svn: 271068
This commit is contained in:
parent
1e75fa4ad8
commit
04f8e06696
|
@ -963,9 +963,6 @@ void StackColoring::expungeSlotMap(DenseMap<int, int> &SlotRemap,
|
||||||
}
|
}
|
||||||
|
|
||||||
bool StackColoring::runOnMachineFunction(MachineFunction &Func) {
|
bool StackColoring::runOnMachineFunction(MachineFunction &Func) {
|
||||||
if (skipFunction(*Func.getFunction()))
|
|
||||||
return false;
|
|
||||||
|
|
||||||
DEBUG(dbgs() << "********** Stack Coloring **********\n"
|
DEBUG(dbgs() << "********** Stack Coloring **********\n"
|
||||||
<< "********** Function: "
|
<< "********** Function: "
|
||||||
<< ((const Value*)Func.getFunction())->getName() << '\n');
|
<< ((const Value*)Func.getFunction())->getName() << '\n');
|
||||||
|
@ -1005,7 +1002,8 @@ bool StackColoring::runOnMachineFunction(MachineFunction &Func) {
|
||||||
|
|
||||||
// Don't continue because there are not enough lifetime markers, or the
|
// Don't continue because there are not enough lifetime markers, or the
|
||||||
// stack is too small, or we are told not to optimize the slots.
|
// stack is too small, or we are told not to optimize the slots.
|
||||||
if (NumMarkers < 2 || TotalSize < 16 || DisableColoring) {
|
if (NumMarkers < 2 || TotalSize < 16 || DisableColoring ||
|
||||||
|
skipFunction(*Func.getFunction())) {
|
||||||
DEBUG(dbgs()<<"Will not try to merge slots.\n");
|
DEBUG(dbgs()<<"Will not try to merge slots.\n");
|
||||||
return removeAllMarkers();
|
return removeAllMarkers();
|
||||||
}
|
}
|
||||||
|
|
|
@ -46,7 +46,6 @@ attributes #0 = { optnone noinline }
|
||||||
; LLC-Ox-DAG: Skipping pass 'Machine Copy Propagation Pass'
|
; LLC-Ox-DAG: Skipping pass 'Machine Copy Propagation Pass'
|
||||||
; LLC-Ox-DAG: Skipping pass 'Machine Instruction Scheduler'
|
; LLC-Ox-DAG: Skipping pass 'Machine Instruction Scheduler'
|
||||||
; LLC-Ox-DAG: Skipping pass 'Machine Loop Invariant Code Motion'
|
; LLC-Ox-DAG: Skipping pass 'Machine Loop Invariant Code Motion'
|
||||||
; LLC-Ox-DAG: Skipping pass 'Merge disjoint stack slots'
|
|
||||||
; LLC-Ox-DAG: Skipping pass 'Optimize machine instruction PHIs'
|
; LLC-Ox-DAG: Skipping pass 'Optimize machine instruction PHIs'
|
||||||
; LLC-Ox-DAG: Skipping pass 'Peephole Optimizations'
|
; LLC-Ox-DAG: Skipping pass 'Peephole Optimizations'
|
||||||
; LLC-Ox-DAG: Skipping pass 'Post{{.*}}RA{{.*}}{{[Ss]}}cheduler'
|
; LLC-Ox-DAG: Skipping pass 'Post{{.*}}RA{{.*}}{{[Ss]}}cheduler'
|
||||||
|
|
|
@ -154,3 +154,25 @@ bb.true:
|
||||||
bb.false:
|
bb.false:
|
||||||
ret i32 0
|
ret i32 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
; This function is here to verify that opt-bisect can skip all passes for
|
||||||
|
; functions that contain lifetime intrinsics.
|
||||||
|
define void @f4() {
|
||||||
|
entry:
|
||||||
|
%i = alloca i32, align 4
|
||||||
|
%tmp = bitcast i32* %i to i8*
|
||||||
|
call void @llvm.lifetime.start(i64 4, i8* %tmp)
|
||||||
|
br label %for.cond
|
||||||
|
|
||||||
|
for.cond:
|
||||||
|
br i1 undef, label %for.body, label %for.end
|
||||||
|
|
||||||
|
for.body:
|
||||||
|
br label %for.cond
|
||||||
|
|
||||||
|
for.end:
|
||||||
|
ret void
|
||||||
|
}
|
||||||
|
|
||||||
|
declare void @llvm.lifetime.start(i64, i8* nocapture)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue