[LLVMdev] Representing -ffast-math at the IR level
Chandler Carruth
chandlerc at google.com
Mon Apr 16 07:29:12 PDT 2012
Thanks for the updates!
Minor comments:
+ if (!Accuracy)
+ // If it's not a floating point number then it must be 'fast'.
+ return HUGE_VALF;
Can we add an assert instead of a comment? It's just as documenting and
will catch any goofs.
+ // If it's not a floating point number then it must be 'fast'.
+ return !isa<ConstantFP>(MD->getOperand(0));
Here as well.
+ if (ConstantFP *CFP0 = dyn_cast_or_null<ConstantFP>(Op0)) {
+ APFloat Accuracy = CFP0->getValueAPF();
+ Assert1(Accuracy.isNormal() && !Accuracy.isNegative(),
+ "fpmath accuracy not a positive number!", &I);
To be pedantic for a moment, zero is not a positive number. What about
asserting these individually to give us more clear asserts if they fire?
That also makes the string easier to write: "fpmath accuracy is a negative
number!".
+ /// SetDefaultFPMathTag - Set the floating point math metadata to be
used.
+ void SetDefaultFPMathTag(MDNode *FPMathTag) { DefaultFPMathTag =
FPMathTag; }
This should be 'setDefault...' much like 'getDefault...' above.
+ Instruction *AddFPMathTag(Instruction *I, MDNode *FPMathTag) const {
Another bad case, but I think this instruction is gone...
+ MDString *GetFastString() const {
+ return CreateString("fast");
+ }
'getFastString'.
+ /// CreateFastFPMath - Return metadata with appropriate settings for
'fast
+ /// math'.
I would prefer the more modern doxygen style:
/// \brief Return metadata ...
+ MDNode *CreateFastFPMath() {
Capitalization.
The capitalization and doxygen style comments apply to the next function as
well.
Both the Clang and DragonEgg patches look good, but both need test cases. =]
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20120416/466d8d0e/attachment.html>
More information about the llvm-dev
mailing list