[PATCH] D47323: FastMathFlags: Make it easier to unset individual ones.
Nicola Zaghen via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Thu May 24 06:45:27 PDT 2018
Nicola created this revision.
Nicola added a reviewer: spatel.
Herald added a subscriber: llvm-commits.
This makes the various flags similar to current setAllowContract.
I added a default argument that sets them to true to avoid breaking the current uses.
Repository:
rL LLVM
https://reviews.llvm.org/D47323
Files:
include/llvm/IR/Operator.h
Index: include/llvm/IR/Operator.h
===================================================================
--- include/llvm/IR/Operator.h
+++ include/llvm/IR/Operator.h
@@ -207,17 +207,24 @@
bool isFast() const { return all(); }
/// Flag setters
- void setAllowReassoc() { Flags |= AllowReassoc; }
- void setNoNaNs() { Flags |= NoNaNs; }
- void setNoInfs() { Flags |= NoInfs; }
- void setNoSignedZeros() { Flags |= NoSignedZeros; }
- void setAllowReciprocal() { Flags |= AllowReciprocal; }
- // TODO: Change the other set* functions to take a parameter?
- void setAllowContract(bool B) {
+ void setAllowReassoc(bool B = true) {
+ Flags = (Flags & ~AllowReassoc) | B * AllowReassoc;
+ }
+ void setNoNaNs(bool B = true) { Flags = (Flags & ~NoNaNs) | B * NoNaNs; }
+ void setNoInfs(bool B = true) { Flags = (Flags & ~NoInfs) | B * NoInfs; }
+ void setNoSignedZeros(bool B = true) {
+ Flags = (Flags & ~NoSignedZeros) | B * NoSignedZeros;
+ }
+ void setAllowReciprocal(bool B = true) {
+ Flags = (Flags & ~AllowReciprocal) | B * AllowReciprocal;
+ }
+ void setAllowContract(bool B = true) {
Flags = (Flags & ~AllowContract) | B * AllowContract;
}
- void setApproxFunc() { Flags |= ApproxFunc; }
- void setFast() { set(); }
+ void setApproxFunc(bool B = true) {
+ Flags = (Flags & ~ApproxFunc) | B * ApproxFunc;
+ }
+ void setFast(bool B = true) { B ? set() : clear(); }
void operator&=(const FastMathFlags &OtherFlags) {
Flags &= OtherFlags.Flags;
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D47323.148400.patch
Type: text/x-patch
Size: 1546 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20180524/a24357a1/attachment.bin>
More information about the llvm-commits
mailing list