This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug tree-optimization/17051] [3.5 Regression] ICE: internal compiler error: verify_ssa failed.for SSA_NAME: l_addr<D8610>_650


------- Additional Comments From pinskia at gcc dot gnu dot org  2004-08-17 00:39 -------
Confirmed, reduced to this:
typedef int int16_t __attribute__ ((__mode__ (__HI__)));
typedef int int32_t __attribute__ ((__mode__ (__SI__)));
typedef unsigned int u_int16_t __attribute__ ((__mode__ (__HI__)));
typedef unsigned short int uint16_t;
typedef unsigned int uint32_t;
typedef uint16_t Elf32_Half;
typedef uint32_t Elf32_Word;
typedef int32_t Elf32_Sword;
typedef uint32_t Elf32_Addr;

typedef uint16_t Elf32_Section;

typedef struct
{
  Elf32_Word st_name;
  Elf32_Addr st_value;
  Elf32_Word st_size;
  unsigned char st_info;
  unsigned char st_other;
  Elf32_Section st_shndx;
} Elf32_Sym;
typedef struct
{
  Elf32_Addr r_offset;
  Elf32_Word r_info;
} Elf32_Rel;
typedef struct
{
  Elf32_Sword d_tag;
  union
    {
      Elf32_Word d_val;
      Elf32_Addr d_ptr;
    } d_un;
} Elf32_Dyn;
struct link_map;
struct elf32_fdpic_loadseg
{
  Elf32_Addr addr;
  Elf32_Addr p_vaddr;
  Elf32_Word p_memsz;
};

struct elf32_fdpic_loadaddr {
  struct elf32_fdpic_loadmap *map;
  void *got_value;
};
struct link_map
  {
    struct elf32_fdpic_loadaddr l_addr; 
    Elf32_Dyn *l_info[1];
    struct r_found_version *l_versions;
};

struct r_found_version { const char *name; };
extern struct link_map _dl_rtld_map;

void 
elf_dynamic_do_rel (struct link_map *map,
      Elf32_Addr reladdr, Elf32_Addr relsize,
      int lazy)
{
  const Elf32_Rel *r = (const void *) reladdr;
  const Elf32_Rel *end = (const void *) (reladdr + relsize);
  struct elf32_fdpic_loadaddr l_addr = map->l_addr;
  
  if (lazy)
    elf_machine_lazy_rel (l_addr);
  else
  {
    const Elf32_Sym *const symtab = (const void *) (((Elf32_Addr)
						     (__reloc_pointer ((void*)((map->l_info[6]->d_un.d_ptr)),
								       ((map->l_addr)).map))));
    Elf32_Word nrelative = (map->l_info[(34 + 0 + (0x6fffffff - (0x6ffffffa)))] == ((void *)0)
			    ? 0 : map->l_info[(34 + 0 + (0x6fffffff - (0x6ffffffa)))]->d_un.d_val);
    const Elf32_Rel *relative = r;
    r = r + (((nrelative)<(relsize / sizeof (Elf32_Rel)))?(nrelative):(relsize / sizeof (Elf32_Rel)));
    if (map != &_dl_rtld_map)
      elf_machine_rel_relative (l_addr, relative, (void *) ((Elf32_Addr) (__reloc_pointer ((void*)((relative 
->r_offset)), ((l_addr)).map))));
    const Elf32_Half *const version = (const void *) (((Elf32_Addr)
						       (__reloc_pointer ((void*)((map->l_info[(34 + 0 + (0x6fffffff - 
(0x6ffffff0)))]->d_un.d_ptr)),((map->l_addr)).map))));
    Elf32_Half ndx = version[((r->r_info) >> 8)] & 0x7fff;
    elf_machine_rel (map, r, &symtab[((r->r_info) >> 8)],
		     &map->l_versions[ndx],
		     (void *) ((Elf32_Addr) (__reloc_pointer ((void*)((r->r_offset)), ((l_addr)).map))));
  }
}


-- 
           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
     Ever Confirmed|                            |1
 GCC target triplet|frv-elf                     |
   Last reconfirmed|0000-00-00 00:00:00         |2004-08-17 00:39:30
               date|                            |


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=17051


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]