Revert "[NFC] Make FPClassTest a bitmask enumeration"
This reverts commit 2e416cdd52.
Breaks the GCC build:
In file included from /home/npopov/repos/llvm-project/llvm/include/llvm/ADT/FloatingPointMode.h:18,
from /home/npopov/repos/llvm-project/llvm/include/llvm/ADT/APFloat.h:20,
from /home/npopov/repos/llvm-project/llvm/lib/Support/APFloat.cpp:14:
/home/npopov/repos/llvm-project/llvm/include/llvm/ADT/BitmaskEnum.h:66:22: error: extra qualification not allowed [-fpermissive]
66 | template <> struct llvm::is_bitmask_enum<Enum> : std::true_type {}; \
| ^~~~
/home/npopov/repos/llvm-project/llvm/include/llvm/ADT/FloatingPointMode.h:223:1: note: in expansion of macro ‘LLVM_DECLARE_ENUM_AS_BITMASK’
223 | LLVM_DECLARE_ENUM_AS_BITMASK(FPClassTest, /* LargestValue */ fcPosInf);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/npopov/repos/llvm-project/llvm/include/llvm/ADT/BitmaskEnum.h:67:22: error: extra qualification not allowed [-fpermissive]
67 | template <> struct llvm::largest_bitmask_enum_bit<Enum> { \
| ^~~~
/home/npopov/repos/llvm-project/llvm/include/llvm/ADT/FloatingPointMode.h:223:1: note: in expansion of macro ‘LLVM_DECLARE_ENUM_AS_BITMASK’
223 | LLVM_DECLARE_ENUM_AS_BITMASK(FPClassTest, /* LargestValue */ fcPosInf);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
[43/4396] Building CXX object lib/Supp...iles/LLVMSupport.dir/CommandLine.cpp.o
This commit is contained in:
@@ -15,7 +15,6 @@
|
||||
#ifndef LLVM_ADT_FLOATINGPOINTMODE_H
|
||||
#define LLVM_ADT_FLOATINGPOINTMODE_H
|
||||
|
||||
#include "llvm/ADT/BitmaskEnum.h"
|
||||
#include "llvm/ADT/StringSwitch.h"
|
||||
#include "llvm/Support/raw_ostream.h"
|
||||
|
||||
@@ -193,11 +192,11 @@ void DenormalMode::print(raw_ostream &OS) const {
|
||||
OS << denormalModeKindName(Output) << ',' << denormalModeKindName(Input);
|
||||
}
|
||||
|
||||
} // namespace llvm
|
||||
|
||||
/// Floating-point class tests, supported by 'is_fpclass' intrinsic. Actual
|
||||
/// test may be an OR combination of basic tests.
|
||||
enum FPClassTest : unsigned {
|
||||
fcNone = 0,
|
||||
|
||||
enum FPClassTest {
|
||||
fcSNan = 0x0001,
|
||||
fcQNan = 0x0002,
|
||||
fcNegInf = 0x0004,
|
||||
@@ -217,11 +216,7 @@ enum FPClassTest : unsigned {
|
||||
fcPosFinite = fcPosNormal | fcPosSubnormal | fcPosZero,
|
||||
fcNegFinite = fcNegNormal | fcNegSubnormal | fcNegZero,
|
||||
fcFinite = fcPosFinite | fcNegFinite,
|
||||
fcAllFlags = fcNan | fcInf | fcFinite,
|
||||
fcAllFlags = fcNan | fcInf | fcFinite
|
||||
};
|
||||
|
||||
LLVM_DECLARE_ENUM_AS_BITMASK(FPClassTest, /* LargestValue */ fcPosInf);
|
||||
|
||||
} // namespace llvm
|
||||
|
||||
#endif // LLVM_ADT_FLOATINGPOINTMODE_H
|
||||
|
||||
@@ -19,8 +19,6 @@
|
||||
namespace llvm {
|
||||
|
||||
class BasicBlock;
|
||||
enum FPClassTest : unsigned;
|
||||
|
||||
/// Encapsulates all of the information needed to generate a stack protector
|
||||
/// check, and signals to isel when initialized that one needs to be generated.
|
||||
///
|
||||
@@ -220,7 +218,7 @@ findSplitPointForStackProtector(MachineBasicBlock *BB,
|
||||
/// \param Test The test as specified in 'is_fpclass' intrinsic invocation.
|
||||
/// \returns The inverted test, or zero, if inversion does not produce simpler
|
||||
/// test.
|
||||
FPClassTest getInvertedFPClassTest(FPClassTest Test);
|
||||
unsigned getInvertedFPClassTest(unsigned Test);
|
||||
|
||||
/// Assuming the instruction \p MI is going to be deleted, attempt to salvage
|
||||
/// debug users of \p MI by writing the effect of \p MI in a DIExpression.
|
||||
|
||||
@@ -4956,7 +4956,7 @@ public:
|
||||
/// \param Test The test to perform.
|
||||
/// \param Flags The optimization flags.
|
||||
/// \returns The expansion result or SDValue() if it fails.
|
||||
SDValue expandIS_FPCLASS(EVT ResultVT, SDValue Op, FPClassTest Test,
|
||||
SDValue expandIS_FPCLASS(EVT ResultVT, SDValue Op, unsigned Test,
|
||||
SDNodeFlags Flags, const SDLoc &DL,
|
||||
SelectionDAG &DAG) const;
|
||||
|
||||
|
||||
@@ -173,8 +173,8 @@ llvm::findSplitPointForStackProtector(MachineBasicBlock *BB,
|
||||
return SplitPoint;
|
||||
}
|
||||
|
||||
FPClassTest llvm::getInvertedFPClassTest(FPClassTest Test) {
|
||||
FPClassTest InvertedTest = ~Test & fcAllFlags;
|
||||
unsigned llvm::getInvertedFPClassTest(unsigned Test) {
|
||||
unsigned InvertedTest = ~Test & fcAllFlags;
|
||||
switch (InvertedTest) {
|
||||
default:
|
||||
break;
|
||||
@@ -198,7 +198,7 @@ FPClassTest llvm::getInvertedFPClassTest(FPClassTest Test) {
|
||||
case fcNegFinite:
|
||||
return InvertedTest;
|
||||
}
|
||||
return fcNone;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static MachineOperand *getSalvageOpsForCopy(const MachineRegisterInfo &MRI,
|
||||
|
||||
@@ -6510,8 +6510,7 @@ void SelectionDAGBuilder::visitIntrinsicCall(const CallInst &I,
|
||||
const DataLayout DLayout = DAG.getDataLayout();
|
||||
EVT DestVT = TLI.getValueType(DLayout, I.getType());
|
||||
EVT ArgVT = TLI.getValueType(DLayout, I.getArgOperand(0)->getType());
|
||||
FPClassTest Test = static_cast<FPClassTest>(
|
||||
cast<ConstantInt>(I.getArgOperand(1))->getZExtValue());
|
||||
unsigned Test = cast<ConstantInt>(I.getArgOperand(1))->getZExtValue();
|
||||
MachineFunction &MF = DAG.getMachineFunction();
|
||||
const Function &F = MF.getFunction();
|
||||
SDValue Op = getValue(I.getArgOperand(0));
|
||||
|
||||
@@ -8004,7 +8004,7 @@ SDValue TargetLowering::expandFMINNUM_FMAXNUM(SDNode *Node,
|
||||
}
|
||||
|
||||
SDValue TargetLowering::expandIS_FPCLASS(EVT ResultVT, SDValue Op,
|
||||
FPClassTest Test, SDNodeFlags Flags,
|
||||
unsigned Test, SDNodeFlags Flags,
|
||||
const SDLoc &DL,
|
||||
SelectionDAG &DAG) const {
|
||||
EVT OperandVT = Op.getValueType();
|
||||
@@ -8027,7 +8027,7 @@ SDValue TargetLowering::expandIS_FPCLASS(EVT ResultVT, SDValue Op,
|
||||
// Some checks may be represented as inversion of simpler check, for example
|
||||
// "inf|normal|subnormal|zero" => !"nan".
|
||||
bool IsInverted = false;
|
||||
if (FPClassTest InvertedCheck = getInvertedFPClassTest(Test)) {
|
||||
if (unsigned InvertedCheck = getInvertedFPClassTest(Test)) {
|
||||
IsInverted = true;
|
||||
Test = InvertedCheck;
|
||||
}
|
||||
|
||||
@@ -5070,7 +5070,7 @@ void Verifier::visitIntrinsicCall(Intrinsic::ID ID, CallBase &Call) {
|
||||
}
|
||||
case Intrinsic::is_fpclass: {
|
||||
const ConstantInt *TestMask = cast<ConstantInt>(Call.getOperand(1));
|
||||
Check((TestMask->getZExtValue() & ~static_cast<unsigned>(fcAllFlags)) == 0,
|
||||
Check((TestMask->getZExtValue() & ~fcAllFlags) == 0,
|
||||
"unsupported bits for llvm.is.fpclass test mask");
|
||||
break;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user