forked from OSchip/llvm-project
Add a note about permitting default member initializers
Use them in WinEHPrepare so that we can spot any toolchain bugs that come up. llvm-svn: 236244
This commit is contained in:
parent
738c55d5f4
commit
582786b6cc
|
@ -131,6 +131,12 @@ unlikely to be supported by our host compilers.
|
|||
cannot synthesize them.
|
||||
* Initializer lists: N2627_
|
||||
* Delegating constructors: N1986_
|
||||
* Default member initializers (non-static data member initializers): N2756_
|
||||
|
||||
* Only use these for scalar members that would otherwise be left
|
||||
uninitialized. Non-scalar members generally have appropriate default
|
||||
constructors, and MSVC 2013 has problems when braced initializer lists are
|
||||
involved.
|
||||
|
||||
.. _N2118: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n2118.html
|
||||
.. _N2439: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2439.htm
|
||||
|
@ -156,7 +162,7 @@ unlikely to be supported by our host compilers.
|
|||
.. _N2346: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2346.htm
|
||||
.. _N2627: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2672.htm
|
||||
.. _N1986: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1986.pdf
|
||||
.. _MSVC-compatible RTTI: http://llvm.org/PR18951
|
||||
.. _N2756: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2756.htm
|
||||
|
||||
The supported features in the C++11 standard libraries are less well tracked,
|
||||
but also much greater. Most of the standard libraries implement most of C++11's
|
||||
|
|
|
@ -72,7 +72,7 @@ class WinEHPrepare : public FunctionPass {
|
|||
public:
|
||||
static char ID; // Pass identification, replacement for typeid.
|
||||
WinEHPrepare(const TargetMachine *TM = nullptr)
|
||||
: FunctionPass(ID), DT(nullptr), SEHExceptionCodeSlot(nullptr) {
|
||||
: FunctionPass(ID) {
|
||||
if (TM)
|
||||
TheTriple = Triple(TM->getTargetTriple());
|
||||
}
|
||||
|
@ -119,8 +119,8 @@ private:
|
|||
Triple TheTriple;
|
||||
|
||||
// All fields are reset by runOnFunction.
|
||||
DominatorTree *DT;
|
||||
EHPersonality Personality;
|
||||
DominatorTree *DT = nullptr;
|
||||
EHPersonality Personality = EHPersonality::Unknown;
|
||||
CatchHandlerMapTy CatchHandlerMap;
|
||||
CleanupHandlerMapTy CleanupHandlerMap;
|
||||
DenseMap<const LandingPadInst *, LandingPadMap> LPadMaps;
|
||||
|
@ -150,7 +150,7 @@ private:
|
|||
// 32-bit EH.
|
||||
DenseMap<Function *, Value *> HandlerToParentFP;
|
||||
|
||||
AllocaInst *SEHExceptionCodeSlot;
|
||||
AllocaInst *SEHExceptionCodeSlot = nullptr;
|
||||
};
|
||||
|
||||
class WinEHFrameVariableMaterializer : public ValueMaterializer {
|
||||
|
|
Loading…
Reference in New Issue