Update the stack coloring pass to remove lifetime intrinsics in the optnone/opt-bisect skip case.

Differential Revision: http://reviews.llvm.org/D20453



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271068 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Andrew Kaylor 2016-05-27 22:56:49 +00:00
parent 5683aa8247
commit c465f6c040
3 changed files with 24 additions and 5 deletions

View File

@ -963,9 +963,6 @@ void StackColoring::expungeSlotMap(DenseMap<int, int> &SlotRemap,
}
bool StackColoring::runOnMachineFunction(MachineFunction &Func) {
if (skipFunction(*Func.getFunction()))
return false;
DEBUG(dbgs() << "********** Stack Coloring **********\n"
<< "********** Function: "
<< ((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
// 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");
return removeAllMarkers();
}

View File

@ -46,7 +46,6 @@ attributes #0 = { optnone noinline }
; LLC-Ox-DAG: Skipping pass 'Machine Copy Propagation Pass'
; LLC-Ox-DAG: Skipping pass 'Machine Instruction Scheduler'
; 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 'Peephole Optimizations'
; LLC-Ox-DAG: Skipping pass 'Post{{.*}}RA{{.*}}{{[Ss]}}cheduler'

View File

@ -154,3 +154,25 @@ bb.true:
bb.false:
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)