The problem seems to be that promote_decl_mode() is changing the value
returned from the pair constructor from HImode to BLKmode:
(gdb) p debug_tree(decl)
<result_decl 0x2aaaab61ea80 D.2836
type <record_type 0x2aaaab5d9930 pair no-force-blk type_5 type_6 BLK
size <integer_cst 0x2aaaaaaf05f0 constant 16>
unit size <integer_cst 0x2aaaaaaf0618 constant 2>
align 8 symtab 0 alias set -1 canonical type 0x2aaaab5d9930
fields <field_decl 0x2aaaab5f1d10 first type <boolean_type
0x2aaaaab08888 bool>
unsigned nonlocal decl_3 QI file PR48660.cpp line 6 col 7
size <integer_cst 0x2aaaaaaf04b0 constant 8>
unit size <integer_cst 0x2aaaaaaf04d8 constant 1>
align 8 offset_align 64
offset <integer_cst 0x2aaaaaaf0410 constant 0>
bit offset <integer_cst 0x2aaaaaaf0e38 constant 0> context
<record_type 0x2aaaab5d9930 pair> chain <field_decl 0x2aaaab5f1da8 second>>
context <translation_unit_decl 0x2aaaaaafb508 D.1>
full-name "struct pair<bool, bool>"
X() X(constX&) this=(X&) n_parents=0 use_template=1 interface-unknown
pointer_to_this <pointer_type 0x2aaaab603150> chain <type_decl
0x2aaaab5ce958 pair>>
used ignored regdecl BLK file PR48660.cpp line 31 col 1 size <integer_cst
0x2aaaaaaf05f0 16> unit size <integer_cst 0x2aaaaaaf0618 2>
align 8
(reg:HI 140 [ <retval> ])>
This is in turn happening because DECL_MODE (decl) == BLKmode, while in
the caller, GET_MODE (decl_rtl) == HImode. It's not clear to me whether
the rtx expression should have been in BLKmode in the first place, or
whether expand_expr_real_1() should tolerate the conversion. The
context in expand_expr_real_1() suggests that the point of the call to
promote_decl_mode() was to get the signedness of the result, and the
only use of its return value is in the gcc_assert(). I will check
whether moving the gcc_assert() inside the results in
promote_function_mode() branch results in correct code; however, that
may just be papering over a real problem.
--
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/736661
Title:
armel FTBFS due to compiler ICE
To manage notifications about this bug go to:
https://bugs.launchpad.net/gcc/+bug/736661/+subscriptions
--
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs