[Bug middle-end/48043] New: pr47201: var-tracking loc_order_check fails for type punning examples
krebbel at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Wed Mar 9 12:03:00 GMT 2011
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48043
Summary: pr47201: var-tracking loc_order_check fails for type
punning examples
Product: gcc
Version: 4.6.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: middle-end
AssignedTo: unassigned@gcc.gnu.org
ReportedBy: krebbel@gcc.gnu.org
Created attachment 23593
--> http://gcc.gnu.org/bugzilla/attachment.cgi?id=23593
pr47201.i.214r.vartrack
The pr47201 testcase contains a union of an int and a float value.
The way these values are accessed seems to confuse the
canonicalize_loc_order_check done during var-tracking.
/build3/gcc-head/gcc/testsuite/gcc.dg/pr47201.c: In function ‘foo’:
/build3/gcc-head/gcc/testsuite/gcc.dg/pr47201.c:18:1: internal compiler error:
in loc_cmp, at var-tracking.c:2753
Please submit a full bug report,
with preprocessed source if appropriate.
See <http://gcc.gnu.org/bugs.html> for instructions.
pr47201.i.212r.alignments:
(insn 29 10 11 2 (set (reg:SI 1 %r1)
(mem/u/c:SI (plus:SI (reg:SI 12 %r12)
(const:SI (unspec:SI [
(symbol_ref:SI ("u") <var_decl 0x779eb060 u>)
] 111))) [0 S4 A8]))
/build3/gcc-head/gcc/testsuite/gcc.dg/pr47201.c:17 67 {*movsi_esa}
(nil))
(insn 11 29 30 2 (set (reg:SF 16 %f0 [orig:53 u.d ] [53])
(mem/s/j/c:SF (reg:SI 1 %r1) [0 u.d+0 S4 A32]))
/build3/gcc-head/gcc/testsuite/gcc.dg/pr47201.c:17 87 {movsf}
(expr_list:REG_DEAD (reg:SI 1 %r1)
(expr_list:REG_EQUIV (mem/s/j/c:SF (mem/u/c:SI (plus:SI (reg:SI 12
%r12)
(const:SI (unspec:SI [
(symbol_ref:SI ("u") <var_decl 0x779eb060
u>)
] 111))) [0 S4 A8]) [0 u.d+0 S4 A32])
(nil))))
(insn 30 11 12 2 (set (reg:SF 17 %f2)
(mem/u/c:SF (plus:SI (reg:SI 12 %r12)
(const:SI (unspec:SI [
(symbol_ref:SI ("u") <var_decl 0x779eb060 u>)
] 111))) [0 S4 A8]))
/build3/gcc-head/gcc/testsuite/gcc.dg/pr47201.c:17 87 {movsf}
(expr_list:REG_DEAD (reg:SI 12 %r12)
(nil)))
(insn 12 30 13 2 (set (reg:CCZ 33 %cc)
(compare:CCZ (reg:SF 16 %f0 [orig:53 u.d ] [53])
(reg:SF 17 %f2)))
/build3/gcc-head/gcc/testsuite/gcc.dg/pr47201.c:17 49 {*cmpsf_ccs}
(expr_list:REG_DEAD (reg:SF 17 %f2)
(expr_list:REG_DEAD (reg:SF 16 %f0 [orig:53 u.d ] [53])
(nil))))
log_cmp complains about the mode differences of:
(reg:SF 17 %f2)
(reg:SI 1 %r1)
both holding: (symbol_ref:SI ("u") <var_decl 0x779eb060 u>)
from:
(value/u:SI 12:5945 @0xe15b28/0xe27910)
locs:
from insn 30 (reg:SF 17 %f2)
from insn 29 (reg:SI 1 %r1)
from insn 29 (symbol_ref:SI ("u") <var_decl 0x779eb060 u>)
addr list:
(value/u:SF 14:14 @0xe15b58/0xe27950)
More information about the Gcc-bugs
mailing list