r177819 - Make clang to mark static stack allocations with lifetime markers to enable a more aggressive stack coloring.
Ulrich Weigand
Ulrich.Weigand at de.ibm.com
Mon Mar 25 11:27:49 PDT 2013
Nadav Rotem <nrotem at apple.com> wrote on 25.03.2013 19:22:00:
> Thanks for looking at this failure. Does the IR look correct ?
No ... the arguments to printf are reversed already in the IR,
as output via clang -S -emit-llvm.
Before the change we had:
> - %sumV.sroa.0.0.vec.extract = extractelement <8 x double> %add, i32 0
> - %sumV.sroa.0.8.vec.extract = extractelement <8 x double> %add, i32 1
> - %sumV.sroa.0.16.vec.extract = extractelement <8 x double> %add, i32 2
> - %sumV.sroa.0.24.vec.extract = extractelement <8 x double> %add, i32 3
> - %sumV.sroa.0.32.vec.extract = extractelement <8 x double> %add, i32 4
> - %sumV.sroa.0.40.vec.extract = extractelement <8 x double> %add, i32 5
> - %sumV.sroa.0.48.vec.extract = extractelement <8 x double> %add, i32 6
> - %sumV.sroa.0.56.vec.extract = extractelement <8 x double> %add, i32 7
> - %call.i = tail call signext i32 (i8*, ...)* @printf(i8* getelementptr
> inbounds ([25 x i8]* @.str, i64 0, i64 0), double
> %sumV.sroa.0.0.vec.extract, double %sumV.s
> roa.0.8.vec.extract, double %sumV.sroa.0.16.vec.extract, double
> %sumV.sroa.0.24.vec.extract, double %sumV.sroa.0.32.vec.extract, double
> %sumV.sroa.0.40.vec.extract,
> double %sumV.sroa.0.48.vec.extract, double %sumV.sroa.0.56.vec.extract)
#1
so the first printf element is extractelement <8 x double> %add, i32 0
After the change we have:
> + %bitcast = extractelement <8 x double> %add, i32 7
> + %11 = extractelement <8 x double> %add, i32 6
> + %12 = extractelement <8 x double> %add, i32 5
> + %13 = extractelement <8 x double> %add, i32 4
> + %14 = extractelement <8 x double> %add, i32 3
> + %15 = extractelement <8 x double> %add, i32 2
> + %16 = extractelement <8 x double> %add, i32 1
> + %17 = extractelement <8 x double> %add, i32 0
> + %call.i = call signext i32 (i8*, ...)* @printf(i8* getelementptr
> inbounds ([25 x i8]* @.str, i64 0, i64 0), double %bitcast, double %11,
> double %12, double %13, d
> ouble %14, double %15, double %16, double %17) #1
so the first printf element is extractelement <8 x double> %add, i32 7
The PowerPC assembler output in both cases correctly reflects the IR.
Bye,
Ulrich
More information about the cfe-commits
mailing list