On Mon, Jun 16, 2014 at 10:25:36AM +0100, Christophe Lyon wrote:
> Hi,
> 
> This patches causes a failure to build GCC (since commit 211655), on
> all ARM and Aarch64 targets I track.
> 
> I can see failures when building libgcc (_mulsc3.o, _muldc3.o,
> _divdc3.o), the error message being:
> 0xa07f6f crash_signal
>         
> /tmp/214822_1.tmpdir/aci-gcc-fsf/sources/gcc-fsf/gccsrc/gcc/toplev.c:337
> Please submit a full bug report,
> 

I'm also seeing this building libgcc's linux-atomic-64bit.c. Reduced
testcase attached, and a slightly more detailed backtrace:

(gdb) bt
#0  0x00000000 in ?? ()
#1  0x0054b626 in assign_by_spills () at 
/home/jamgre01//gcc-clean/gcc/lra-assigns.c:1434
#2  0x0054b8da in lra_assign () at 
/home/jamgre01//gcc-clean/gcc/lra-assigns.c:1499
#3  0x00545dd2 in lra (f=0x0) at /home/jamgre01//gcc-clean/gcc/lra.c:2230
#4  0x004ff7a6 in do_reload () at /home/jamgre01//gcc-clean/gcc/ira.c:5325
#5  0x004ffb4a in (anonymous namespace)::pass_reload::execute (this=0x11bb8e0) 
at /home/jamgre01//gcc-clean/gcc/ira.c:5486
#6  0x005c6da0 in execute_one_pass (pass=0x11bb8e0) at 
/home/jamgre01//gcc-clean/gcc/passes.c:2180
#7  0x005c6f8e in execute_pass_list_1 (pass=0x11bb8e0) at 
/home/jamgre01//gcc-clean/gcc/passes.c:2233
#8  0x005c6fb4 in execute_pass_list_1 (pass=0x11bac80) at 
/home/jamgre01//gcc-clean/gcc/passes.c:2234
#9  0x005c6fea in execute_pass_list (fn=0xb6c63bc8, pass=0x11b8880) at 
/home/jamgre01//gcc-clean/gcc/passes.c:2244
#10 0x002ef55a in expand_function (node=0xb6c582a0) at 
/home/jamgre01//gcc-clean/gcc/cgraphunit.c:1787
#11 0x002efaaa in expand_all_functions () at 
/home/jamgre01//gcc-clean/gcc/cgraphunit.c:1921
#12 0x002f03f4 in compile () at /home/jamgre01//gcc-clean/gcc/cgraphunit.c:2265
#13 0x002f056c in finalize_compilation_unit () at 
/home/jamgre01//gcc-clean/gcc/cgraphunit.c:2342
#14 0x00183b5a in c_write_global_declarations () at 
/home/jamgre01//gcc-clean/gcc/c/c-decl.c:10452
#15 0x006a444e in compile_file () at /home/jamgre01//gcc-clean/gcc/toplev.c:562
#16 0x006a6aa8 in do_compile () at /home/jamgre01//gcc-clean/gcc/toplev.c:1918
#17 0x006a6c34 in toplev_main (argc=4, argv=0xbefff014) at 
/home/jamgre01//gcc-clean/gcc/toplev.c:1994
#18 0x00cdb332 in main (argc=4, argv=0xbefff014) at 
/home/jamgre01//gcc-clean/gcc/main.c:36

Thanks,
James

/* /home/jamgre01/build/clean/./gcc/cc1 besttry.c -O2 -fPIC   */
# 1 "besttry.c"
typedef int(__kernel_cmpxchg64_t)(const long long *oldval,
                                  const long long *newval, long long *ptr);
long long __attribute__((visibility("hidden")))
__sync_fetch_and_nand_8(long long *ptr, long long val) {
  int failure;
  long long tmp, tmp2;
  do {
    tmp = *ptr;
    tmp2 = ~(tmp & val);
    failure = (*(__kernel_cmpxchg64_t *)0xffff0f60)(&tmp, &tmp2, ptr);
  } while (failure != 0);
}

Reply via email to