[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#484053: g++-4.3: [PR36415] [4.1/4.2 regression, armel] ICE in extract_insn, at recog.c:1990



Package: g++-4.3
Version: 4.3.0-5
Severity: important

g++-4.3 fails to build texlive-bin on armel (but not on arm), with the
following error:

g++ -D_REENTRANT -I../../../../libs/icu-xetex/i18n -I../common -I../../../../libs/icu-xetex/common -D_REENTRANT  -DU_I18N_IMPLEMENTATION -g -O2  -c   -o rematch.ao ../../../../libs/icu-xetex/i18n/rematch.cpp
../../../../libs/icu-xetex/i18n/rematch.cpp: In member function 'void icu_3_4::RegexMatcher::MatchAt(int32_t, UErrorCode&)':
../../../../libs/icu-xetex/i18n/rematch.cpp:2293: error: unrecognizable insn:
(insn 4198 1384 1386 184 ../../../../libs/icu-xetex/i18n/rematch.cpp:1465 (set (reg:SI 12 ip)
        (plus:SI (reg:SI 3 r3 [953])
            (mult:SI (reg/v:SI 14 lr [orig:234 opValue.2048 ] [234])
                (const_int 32 [0x20])))) -1 (nil))
../../../../libs/icu-xetex/i18n/rematch.cpp:2293: internal compiler error: in extract_insn, at recog.c:1990
Please submit a full bug report,
with preprocessed source if appropriate.
See <file:///usr/share/doc/gcc-4.3/README.Bugs> for instructions.

Reduced testcase attached.

-- System Information:
Debian Release: lenny/sid
  APT prefers testing
  APT policy: (500, 'unstable')
Architecture: armel (armv5tejl)

Kernel: Linux 2.6.25-1-versatile
Locale: LANG=fr_FR.UTF-8, LC_CTYPE=fr_FR.UTF-8 (charmap=UTF-8) (ignored: LC_ALL set to fr_FR.UTF-8)
Shell: /bin/sh linked to /bin/bash

Versions of packages g++-4.3 depends on:
ii  gcc-4.3                   4.3.0-5        The GNU C compiler
ii  gcc-4.3-base              4.3.0-5        The GNU Compiler Collection (base 
ii  libc6                     2.7-10         GNU C Library: Shared libraries
ii  libgcc1                   1:4.3.0-5      GCC support library
ii  libgmp3c2                 2:4.2.2+dfsg-3 Multiprecision arithmetic library
ii  libmpfr1ldbl              2.3.1.dfsg.1-2 multiple precision floating-point 
ii  libstdc++6-4.3-dev        4.3.0-5        The GNU Standard C++ Library v3 (d

g++-4.3 recommends no packages.

-- no debconf information
extern "C"
{
  typedef int int8_t __attribute__ ((__mode__ (__QI__)));
  typedef int int32_t __attribute__ ((__mode__ (__SI__)));
}
typedef unsigned short int uint16_t;
typedef unsigned int uint32_t;
typedef int8_t UBool;
typedef uint16_t UChar;
typedef int32_t UChar32;
typedef void *UClassID;
typedef enum UErrorCode
{
} UErrorCode;
namespace icu_3_4
{
  class UMemory
  {
  };
  class UObject:public UMemory
  {
  };
  class Replaceable:public UObject
  {
  };
  class UnicodeString:public Replaceable
  {
  public:
    inline const UChar *getBuffer () const;
  };
  class UVector;
  class UVector32;
  struct REStackFrame;
  struct Regex8BitSet;
  class RegexPattern:public UObject
  {
  public:
    UVector32 * fCompiledPat;
    UVector *fSets;
    Regex8BitSet *fSets8;
  };
  class RegexMatcher:public UObject
  {
    virtual UBool find ();
    static UClassID getStaticClassID ();
    REStackFrame *resetStack ();
    const RegexPattern *fPattern;
    const UnicodeString *fInput;
  };
  class UnicodeFunctor:public UObject
  {
  };
  class UnicodeMatcher
  {
  };
  class UnicodeFilter:public UnicodeFunctor, public UnicodeMatcher
  {
  };
}
namespace icu_3_4
{
  class UnicodeSet:public UnicodeFilter
  {
  };
  class UVector:public UObject
  {
  public:
    void *elementAt (int32_t index) const;
  };
  class UVector32:public UObject
  {
  public:
    int32_t * getBuffer () const;
    int32_t *reserveBlock (int32_t size, UErrorCode & status);
  };
  inline int32_t *UVector32::reserveBlock (int32_t size, UErrorCode & status)
  {
  }
  enum
  {
    URX_BACKTRACK = 1,
  };
  struct REStackFrame
  {
    int32_t fInputIdx;
    int32_t fPatIdx;
  };
  struct Regex8BitSet:public UMemory
  {
    inline Regex8BitSet ();
    inline UBool contains (UChar32 c);
    int8_t d[32];
  };
  inline Regex8BitSet::Regex8BitSet ()
  {
  }
  inline UBool Regex8BitSet::contains (UChar32 c)
  {
    return ((d[c >> 3] & 1 << (c & 7)) != 0);
  }
  UBool RegexMatcher::find ()
  {
    int32_t op;
    int32_t opType;
    int32_t opValue;
    int32_t *pat = fPattern->fCompiledPat->getBuffer ();
    UVector *sets = fPattern->fSets;
    const UChar *inputBuf = fInput->getBuffer ();
    REStackFrame *fp = resetStack ();
    {
      op = pat[fp->fPatIdx];
      opType = ((uint32_t) (op) >> 24);
      opValue = ((op) & 0xffffff);
      switch (opType)
	{
	case URX_BACKTRACK:
	  {
	    UChar32 c;
	    {
	      (c) = (inputBuf)[(fp->fInputIdx)++];
	      Regex8BitSet *s8 = &fPattern->fSets8[opValue];
	      if (s8->contains (c))
		UnicodeSet *s = (UnicodeSet *) sets->elementAt (opValue);
	    }
	  }
	}
    }
  }
  UClassID RegexMatcher::getStaticClassID ()
  {
  }
}

Reply to: