https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115905

--- Comment #11 from ro at CeBiTec dot Uni-Bielefeld.DE <ro at CeBiTec dot 
Uni-Bielefeld.DE> ---
> --- Comment #10 from Iain Sandoe <iains at gcc dot gnu.org> ---
> unfortunately, (or ...) I Have not succeeded in reproducing this - so will 
> need
> some help to identify what's being done differently from you.
>
> I built:  r15-3667-gf5448384a213 (also on my Darwin17+ set, which includes a
> 32b host - which also seems fine).
>
> On cfarm216 :
> ../src/configure --prefix=/home/iains/gcc-master/gcc-15-0-0
> --with-as=/usr/ccs/bin/as --without-gnu-as --enable-languages=c,c++
> --build=sparc-sun-solaris2.11 CC='gcc -m32' CXX='g++ -m32'
> Thread model: posix
> Supported LTO compression algorithms: zlib zstd
> gcc version 15.0.0 20240916 (experimental) [master f5448384a21] (GCC) 
[...]
> Your report seems to be a compile-time SIGBUS, which is somewhat surprising 
> for
> the changes to address this bug - but always one can be surprised, of course.

Turns out I'm an idiot ;-) The failure happens with -m64, not -m32.

With the preprocessed input:

cc1plus -fpreprocessed ./pr115905.ii -mptr64 -mstack-bias -mno-v8plus -quiet
-m64 -mcpu=v9 -O1 -std=c++20 -fcoroutines 

Thread 2 received signal SIGBUS, Bus error.
[Switching to Thread 1 (LWP 1)]
0x00eff5a0 in store_field (target=0xfaf72c10, bitsize=..., bitpos=..., 
    bitregion_start=..., bitregion_end=..., mode=E_DImode, 
    exp=<ssa_name 0xfaf581e0 7>, alias_set=0, nontemporal=false, reverse=false)
    at /vol/gcc/src/hg/master/local/gcc/expr.cc:8127
8127              && ((((MEM_ALIGN (target) < GET_MODE_ALIGNMENT (mode))
(gdb) bt
#0  0x00eff5a0 in store_field (target=0xfaf72c10, bitsize=..., bitpos=..., 
    bitregion_start=..., bitregion_end=..., mode=E_DImode, 
    exp=<ssa_name 0xfaf581e0 7>, alias_set=0, nontemporal=false, reverse=false)
    at /vol/gcc/src/hg/master/local/gcc/expr.cc:8127
#1  0x00ef92a0 in expand_assignment (to=<mem_ref 0xfaf42900>, 
    from=<ssa_name 0xfaf581e0 7>, nontemporal=false)
    at /vol/gcc/src/hg/master/local/gcc/expr.cc:6338
#2  expand_assignment (to=<mem_ref 0xfaf42900>, from=<ssa_name 0xfaf581e0 7>, 
    nontemporal=<optimized out>)
    at /vol/gcc/src/hg/master/local/gcc/expr.cc:5975
#3  0x00d703fc in expand_gimple_stmt_1 (stmt=<gimple_assign 0xfaf4d4d0>)
    at /vol/gcc/src/hg/master/local/gcc/cfgexpand.cc:4028
#4  expand_gimple_stmt (stmt=<gimple_assign 0xfaf4d4d0>)
    at /vol/gcc/src/hg/master/local/gcc/cfgexpand.cc:4104
#5  0x00d71700 in expand_gimple_basic_block (bb=<optimized out>, 
    disable_tail_calls=<optimized out>)
    at /vol/gcc/src/hg/master/local/gcc/cfgexpand.cc:6160
#6  0x00d73d2c in (anonymous namespace)::pass_expand::execute (
    this=<optimized out>, fun=0xfaf02e88)
    at /vol/gcc/src/hg/master/local/gcc/cfgexpand.cc:6899
#7  0x01299948 in execute_one_pass (pass=<opt_pass* 0x2937028 "expand"(276)>)
    at /vol/gcc/src/hg/master/local/gcc/passes.cc:2659
#8  0x0129a3b8 in execute_pass_list_1 (
    pass=<opt_pass* 0x2937028 "expand"(276)>)
    at /vol/gcc/src/hg/master/local/gcc/passes.cc:2768
#9  0x0129a430 in execute_pass_list (fn=0xfaf02e88, 
    pass=<opt_pass* 0x2933fd8 "fixup_cfg"(106)>)
    at /vol/gcc/src/hg/master/local/gcc/passes.cc:2779
#10 0x00dc905c in cgraph_node::expand (
    this=<cgraph_node * const 0xfaf166e0 "Coro"/147>)
    at /vol/gcc/src/hg/master/local/gcc/context.h:48
#11 cgraph_node::expand (this=<cgraph_node * const 0xfaf166e0 "Coro"/147>)
    at /vol/gcc/src/hg/master/local/gcc/cgraphunit.cc:1798
#12 0x00dcb83c in expand_all_functions ()
    at /vol/gcc/src/hg/master/local/gcc/cgraphunit.cc:2028
#13 symbol_table::compile (this=0xfac12000)
    at /vol/gcc/src/hg/master/local/gcc/cgraphunit.cc:2404
#14 0x00dcee24 in symbol_table::compile (this=0xfac12000)
    at /vol/gcc/src/hg/master/local/gcc/cgraphunit.cc:2315
#15 symbol_table::finalize_compilation_unit (this=0xfac12000)
    at /vol/gcc/src/hg/master/local/gcc/cgraphunit.cc:2589
#16 0x0140136c in compile_file ()
    at /vol/gcc/src/hg/master/local/gcc/toplev.cc:478
#17 0x01404ee8 in do_compile ()
    at /vol/gcc/src/hg/master/local/gcc/toplev.cc:2209
#18 toplev::main (this=<optimized out>, argc=<optimized out>, 
    argv=<optimized out>) at /vol/gcc/src/hg/master/local/gcc/toplev.cc:2369
#19 0x02338ab4 in main (argc=12, argv=0xffbfec84)
    at /vol/gcc/src/hg/master/local/gcc/main.cc:39

and

=> 0xeff5a0 <store_field(rtx, poly_int64, poly_int64, poly_uint64, poly_uint64,
machine_mode, tree, alias_set_type, bool, bool)+1520>:  ld  [ %g1 + 0x1c ], %i1
(gdb) p/x $g1
$2 = 0xafafafaf

    Incurred fault #5, FLTACCESS  %pc = 0x00EFF5A0
      siginfo: SIGBUS BUS_ADRALN addr=0xAFAFAFCB
    Received signal #10, SIGBUS [caught]
      siginfo: SIGBUS BUS_ADRALN addr=0xAFAFAFCB

i.e. an unaligned access just as I thought.

Reply via email to