[LLVMdev] subtle issue with soft-float and new attribute scheme (possibly an issue with other attributes)

reed kotler rkotler at mips.com
Fri May 17 03:04:20 PDT 2013

I can't say this is a bug it is changed behavior from before the new 
attribute scheme.

This issue may appear with other attributes. (there are other attributes 
that clang will now place
on each function)

If you run clang  as a single pass to create a .ll and don't say 
-msoft-float, it puts the attribute use-soft-float=false on every 
function. (It used to be that in that case -msoft-float had no effect 
because those
attributes where not preserved in the IL. )

Then if you run llc and say -soft-float, what happens is that the code 
generator will compile everything as soft-float, but the value of the 
following will be false in XXXISelLowering 

When the constructor for XXXISelLowering is called, 
TM.Options.UseSoftFloat will be true.

What is interesting is that code for "make check" won't have any of the 
new attributes there so
it will work as before.

I was seeing this behavior and could not figure out how my tests could 
possibly pass if getTargetMachine().Options.UseSoftFloat was returning 
the wrong result.

More information about the llvm-dev mailing list