[LLVMbugs] [Bug 483] NEW: [llvmg++] Crash in C++ parser

bugzilla-daemon at cs.uiuc.edu bugzilla-daemon at cs.uiuc.edu
Mon Dec 13 15:06:09 PST 2004


http://llvm.cs.uiuc.edu/bugs/show_bug.cgi?id=483

           Summary: [llvmg++] Crash in C++ parser
           Product: tools
           Version: 1.0
          Platform: All
        OS/Version: All
            Status: NEW
          Severity: normal
          Priority: P2
         Component: llvm-g++
        AssignedTo: unassignedbugs at nondot.org
        ReportedBy: sabre at nondot.org


This looks like a llvmg++ bug in the GCC Parser.  To fix this we'll have to sync
up to newer CVS or find the GCC patch that fixed this:



class Late {
public:
   static const int mode = 0;
};
 
class Early {
public:
   static const int mode = 1;
};
 
class Time {
public:
   template <typename T> Time merge_rat(Time other) {return *this;} 
};
 
template <class V> class GenericBuffer {
protected:
   V _buffer[2][2];
};
 
template <class V> class GenericPair {
protected:
   V _buffer[2];
};
 
class UTimePair : public GenericPair<Time> {
};
 
class UTimeBuffer : public GenericBuffer<Time> {
public:
   template<class EL>
   inline void merge_test(const UTimePair &bias,
                          const UTimePair &rat);
 
   void merge_rat(const UTimePair &delay,
                  const UTimePair &rat);
 
 
   void merge_rat(const UTimeBuffer &delay,
                  const UTimeBuffer &rat);
};
 
template<class EL>
inline void UTimeBuffer::merge_test(const UTimePair &bias,
                                    const UTimePair &at)
{
   _buffer[EL::mode][0].template
      merge_rat<EL>(Time());
}
 
template<class R, class S>
class USpecialArrayRef {
public:
    R& operator[](int index) const;
 
};
 
struct EarlyLatePhaseWaveComplete {
   UTimeBuffer _rat;
};
 
struct EarlyLatePhaseWaveRemaining {
};
 
typedef USpecialArrayRef<EarlyLatePhaseWaveComplete,
                         EarlyLatePhaseWaveRemaining>
EarlyLatePhaseWaveArray;
 
 
 
 
class WithTimingNodeValuesAndFlags
{
public:
   typedef short WaveCount;
 
 
   inline void merge_test(int el,
                          WaveCount index,
                          const UTimePair &bias,
                          const UTimePair &at);
 
   template <class EL>
   inline void merge_test(WaveCount index,
                          const UTimePair &bias,
                          const UTimePair &at);
 
 
   EarlyLatePhaseWaveArray& earlylate_array();
};
 
template <>
inline void
WithTimingNodeValuesAndFlags::merge_test<Late>(WaveCount index,
                                               const UTimePair &bias,
                                               const UTimePair &head_at)
{
   earlylate_array()[index - 1]._rat.merge_test<Late>(bias,head_at);
 
}
 
 
template <>
inline void
WithTimingNodeValuesAndFlags::merge_test<Early>(WaveCount index,
                                                const UTimePair &bias,
                                                const UTimePair &head_at)
{
}
 
inline void WithTimingNodeValuesAndFlags::merge_test(int el,
                                                     WaveCount index,
                                                     const UTimePair &bias,
                                                     const UTimePair &at)
{
}



------- You are receiving this mail because: -------
You are on the CC list for the bug, or are watching someone who is.




More information about the llvm-bugs mailing list