On Wed, Jan 25, 2017 at 01:11:49PM +0100, Sebastian Huber wrote:
> I still get a lot of ICEs with the attached two patches (examples):

> /home/EB/sebastian_h/archive/gcc-git/libgcc/libgcc2.c: In function 
> '__multc3':
> /home/EB/sebastian_h/archive/gcc-git/libgcc/libgcc2.c:2035:1: error: 
> unrecognizable insn:
>  }
>  ^
> (insn 59 58 60 2 (set (reg:CCFP 219)
>         (compare:CCFP (reg/v:TF 193 [ x ])
>             (reg/v:TF 193 [ x ]))) 
> "/home/EB/sebastian_h/archive/gcc-git/libgcc/libgcc2.c":1990 -1
>      (nil))
> /home/EB/sebastian_h/archive/gcc-git/libgcc/libgcc2.c:2035:1: internal 
> compiler error: in extract_insn, at recog.c:2311

The IEEE128 code almost certainly has some bugs on non-Linux configurations.
You could try debugging it, or you could avoid it (for now) by e.g. making
long double the same as double.

> /home/EB/sebastian_h/archive/gcc-git/libstdc++-v3/src/c++98/mt_allocator.cc: 
> In function 'void {anonymous}::_M_destroy_thread_key(void*)':
> /home/EB/sebastian_h/archive/gcc-git/libstdc++-v3/src/c++98/mt_allocator.cc:82:57:
>  
> error: cast from 'void*' to 'uintptr_t {aka unsigned int}' loses precision 
> [-fpermissive]
>        uintptr_t _M_id = reinterpret_cast<uintptr_t>(__id);
>                                                          ^

This sounds like your uintptr_t is a 32-bit type?  That won't work.

> >>/home/EB/sebastian_h/archive/gcc-git/libgcc/emutls.c:171:13: note:
> >>include '<stdlib.h>' or provide a declaration of 'realloc'
> >>/tmp/ccoZ1J0W.s: Assembler messages:
> >>/tmp/ccoZ1J0W.s:125: Error: can't resolve `.got' {.got section} -
> >>`.LCTOC1' {*UND* section}
> >Your TLS is misconfigured.  Or something.
> 
> I compared the linux64.h and freebsd64.h and as a wild guess I added:
> 
> +#undef TARGET_AIX
> +#define        TARGET_AIX TARGET_64BIT
> +
> 
> This seems to fix this issue. I don't know why.

Me neither.

> The resulting objects look not completely bad:

>   Flags:                             0x2, abiv2

Yup, looks correct.


Segher

Reply via email to