diff options
Diffstat (limited to 'gcc-4.8.1/gcc/testsuite/g++.dg/torture/pr41775.C')
-rw-r--r-- | gcc-4.8.1/gcc/testsuite/g++.dg/torture/pr41775.C | 284 |
1 files changed, 0 insertions, 284 deletions
diff --git a/gcc-4.8.1/gcc/testsuite/g++.dg/torture/pr41775.C b/gcc-4.8.1/gcc/testsuite/g++.dg/torture/pr41775.C deleted file mode 100644 index 3d8548e3f..000000000 --- a/gcc-4.8.1/gcc/testsuite/g++.dg/torture/pr41775.C +++ /dev/null @@ -1,284 +0,0 @@ -/* { dg-do compile } */ -/* { dg-require-visibility "" } */ - -typedef unsigned int size_t; -namespace std __attribute__ ((__visibility__ ("default"))) -{ - template < typename _Iterator > struct iterator_traits - { - }; - template < typename _Tp > struct iterator_traits <_Tp * > - { - typedef _Tp & reference; - }; -} - -namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) -{ - using std::iterator_traits; - template < typename _Iterator, typename _Container > class __normal_iterator - { - public:typedef _Iterator iterator_type; - typedef typename iterator_traits < _Iterator >::reference reference; - reference operator* () const - { - } - __normal_iterator operator++ (int) - { - } - }; - template < typename _IteratorL, typename _IteratorR, - typename _Container > inline bool operator!= (const __normal_iterator < - _IteratorL, - _Container > &__lhs, - const __normal_iterator < - _IteratorR, - _Container > &__rhs) - { - } -} - -extern "C" -{ - extern "C" - { - __extension__ typedef __SIZE_TYPE__ __intptr_t; - } -} -namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) -{ - template < typename _Tp > class new_allocator - { - public:typedef size_t size_type; - typedef _Tp *pointer; - template < typename _Tp1 > struct rebind - { - typedef new_allocator < _Tp1 > other; - }; - }; -} - -namespace std __attribute__ ((__visibility__ ("default"))) -{ -template < typename _Tp > class allocator:public __gnu_cxx::new_allocator < - _Tp > - { - }; -} - -extern "C" -{ - typedef __intptr_t intptr_t; -} -namespace llvm -{ - template < typename NodeTy > class ilist_half_node - { - }; -template < typename NodeTy > class ilist_node:private ilist_half_node < - NodeTy > - { - }; - class MachineBasicBlock; - class MachineOperand - { - public:enum MachineOperandType - { - } - Contents; - unsigned getReg () const - { - } - }; - class TargetRegisterInfo; -} - -namespace std __attribute__ ((__visibility__ ("default"))) -{ - template < typename _Tp, typename _Alloc > struct _Vector_base - { - typedef typename _Alloc::template rebind < _Tp >::other _Tp_alloc_type; - }; -template < typename _Tp, typename _Alloc = std::allocator < _Tp > >class vector:protected _Vector_base < _Tp, - _Alloc - > - { - typedef _Vector_base < _Tp, _Alloc > _Base; - typedef typename _Base::_Tp_alloc_type _Tp_alloc_type; - public:typedef _Tp value_type; - typedef typename _Tp_alloc_type::pointer pointer; - typedef __gnu_cxx::__normal_iterator < pointer, vector > iterator; - iterator begin () - { - } - iterator end () - { - } - }; -} - -namespace llvm -{ - class MachineFunction; - class MachineInstr:public ilist_node < MachineInstr > - { - public:const MachineBasicBlock *getParent () const - { - } - const MachineOperand & getOperand (unsigned i) const - { - } - bool registerDefIsDead (unsigned Reg, const TargetRegisterInfo * TRI = - __null) const - { - } - }; - class AnalysisResolver; - class Pass - { - AnalysisResolver *Resolver; - intptr_t PassID; - public: explicit Pass (intptr_t pid):Resolver (0), PassID (pid) - { - } - explicit Pass (const void *pid):Resolver (0), PassID ((intptr_t) pid) - { - } - template < typename AnalysisType > AnalysisType & getAnalysis () const; - }; - class FunctionPass:public Pass - { - public:explicit FunctionPass (intptr_t pid):Pass (pid) - { - } - explicit FunctionPass (const void *pid):Pass (pid) - { - } - }; - class PassInfo - { - public:typedef Pass *(*NormalCtor_t) (); - private:const char *const PassName; - const char *const PassArgument; - const intptr_t PassID; - const bool IsCFGOnlyPass; - const bool IsAnalysis; - const bool IsAnalysisGroup; - NormalCtor_t NormalCtor; - public: PassInfo (const char *name, const char *arg, intptr_t pi, NormalCtor_t normal = 0, bool isCFGOnly = false, bool is_analysis = false):PassName (name), PassArgument (arg), PassID (pi), - IsCFGOnlyPass (isCFGOnly), IsAnalysis (is_analysis), - IsAnalysisGroup (false), NormalCtor (normal) - { - } - }; - template < typename PassName > Pass * callDefaultCtor () - { - return new PassName (); - } - template < typename passName > struct RegisterPass:public PassInfo - { - RegisterPass (const char *PassArg, const char *Name, bool CFGOnly = false, bool is_analysis = false):PassInfo (Name, PassArg, intptr_t (&passName::ID), - PassInfo::NormalCtor_t (callDefaultCtor < passName >), CFGOnly, - is_analysis) - { - } - }; - template < typename T > class SmallVectorImpl - { - }; - template < typename T, - unsigned N > class SmallVector:public SmallVectorImpl < T > - { - }; - class MachineFunctionPass:public FunctionPass - { - protected:explicit MachineFunctionPass (intptr_t ID):FunctionPass (ID) - { - } - explicit MachineFunctionPass (void *ID):FunctionPass (ID) - { - } - virtual bool runOnMachineFunction (MachineFunction & MF) = 0; - }; - class LiveIndex - { - private:unsigned index; - }; - class VNInfo - { - }; - struct LiveRange - { - LiveIndex start; - LiveIndex end; - VNInfo *valno; - }; - class LiveInterval - { - public:typedef SmallVector < LiveRange, 4 > Ranges; - bool containsOneValue () const - { - } - LiveRange *getLiveRangeContaining (LiveIndex Idx) - { - } - void removeRange (LiveIndex Start, LiveIndex End, bool RemoveDeadValNo = - false); - void removeRange (LiveRange LR, bool RemoveDeadValNo = false) - { - removeRange (LR.start, LR.end, RemoveDeadValNo); - } - }; - class LiveIntervals:public MachineFunctionPass - { - public:static char ID; - LiveIndex getDefIndex (LiveIndex index) - { - } - LiveInterval & getInterval (unsigned reg) - { - } - LiveIndex getInstructionIndex (const MachineInstr * instr) const - { - } - }; -} - -using namespace llvm; -namespace -{ -struct __attribute__ ((visibility ("hidden"))) StrongPHIElimination:public - MachineFunctionPass - { - static char ID; - StrongPHIElimination ():MachineFunctionPass (&ID) - { - } - bool runOnMachineFunction (MachineFunction & Fn); - }; -} - -static RegisterPass < StrongPHIElimination > X ("strong-phi-node-elimination", - "Eliminate PHI nodes for register allocation, intelligently"); -bool -StrongPHIElimination::runOnMachineFunction (MachineFunction & Fn) -{ - LiveIntervals & LI = getAnalysis < LiveIntervals > (); - std::vector < MachineInstr * >phis; - for (std::vector < MachineInstr * >::iterator I = phis.begin (), E = - phis.end (); I != E;) - { - MachineInstr *PInstr = *(I++); - unsigned DestReg = PInstr->getOperand (0).getReg (); - LiveInterval & PI = LI.getInterval (DestReg); - if (PInstr->registerDefIsDead (DestReg)) - { - if (PI.containsOneValue ()) - { - LiveIndex idx = - LI.getDefIndex (LI.getInstructionIndex (PInstr)); - PI.removeRange (*PI.getLiveRangeContaining (idx), true); - } - } - } -} |