On 18/02/14 12:59, Renato Golin wrote:
Richard,
I found some emails about you implementing softvfp back in 2003, and I'd like to know what is the expected behaviour when it conflicts with the target triple, for example:
-triple arm-linux-gnueabihf + -mfpu=sofvfp+vfp
In this case, in LLVM, the triple sets "-float-abi=hard" but the fpu would set "+soft-float-abi", which are contradictory flags.
Is that case even possible? If so, what's the expected behaviour? Soft or hard float?
Do the extra flags always override the triple behaviour? Is it expected that *every* compiler flag will work on a last-seen-sets-behaviour manner?
cheers, --renato
I honestly don't remember what -mfpu=softvfp+vfp is without going to look it up... you're talking about code that was written 11 years ago! I suspect it dates to the time when we were starting to phase out support for the old FPA instructions (if you don't remember those, think yourself lucky :-); where softvfp meant to use the floating-point data format that was used with the VFP; the +vfp was probably meant to imply that vfp instructions could be used as well, but didn't change the ABI (doesn't imply float-abi=hard) -- I would say the combination you describe above is probably meaningless.
In the gcc world triplets are only used during configuration of the compiler to set the various defaults, they never override something given on the command line at run time. It is possible to create meaningless combinations of some options (thumb1 + hard-float ABI is currently one that GCC can't handle).
R.