--- Comment #9 from aoliva at gcc dot gnu dot org 2008-12-10 17:22 ---
Subject: Bug 38271
Author: aoliva
Date: Wed Dec 10 17:20:50 2008
New Revision: 142651
URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=142651
Log:
gcc/ChangeLog:
PR middle-end/38271
* tree-sra.c
--- Comment #10 from aoliva at gcc dot gnu dot org 2008-12-10 17:30 ---
Fixed.
--
aoliva at gcc dot gnu dot org changed:
What|Removed |Added
Status|NEW
--
mmitchel at gcc dot gnu dot org changed:
What|Removed |Added
Priority|P3 |P2
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38271
--- Comment #8 from d dot g dot gorbachev at gmail dot com 2008-12-08
20:34 ---
(In reply to comment #7)
The patch causes segfault. This is how it happens:
tree-sra.c:1612
for (f = TYPE_FIELDS (elt-type);
f; f = TREE_CHAIN (f))
{
tree-sra.c:1700
if (size
--- Comment #6 from rguenth at gcc dot gnu dot org 2008-12-05 12:57 ---
This is sra_build_assignment/sra_build_bf_assignments way of lowering a
BIT_FIELD_REF to integer arithmetic. We hit the !INTEGRAL_TYPE_P (TREE_TYPE
(var)) paths and for
BIT_FIELD_REF *p_1(D), 32, 0
we create
--- Comment #7 from rguenth at gcc dot gnu dot org 2008-12-05 13:05 ---
The following would make SRA only combine all of the struct or nothing. That
avoids these messy situations:
Index: tree-sra.c
===
--- tree-sra.c
--- Comment #4 from jakub at gcc dot gnu dot org 2008-12-03 16:28 ---
I can't reproduce this any longer since
http://gcc.gnu.org/viewcvs?view=revrevision=142396
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38271
--- Comment #5 from rguenth at gcc dot gnu dot org 2008-12-03 16:38 ---
Still warns for
truct xxx {
short a;
short b;
void *c;
};
void bar(struct xxx);
void foo(struct xxx *p, int i)
{
struct xxx s0 = *p;
struct xxx s = s0;
if (s.a) i++;
bar(s);
}
at -O -m32
--- Comment #3 from rguenth at gcc dot gnu dot org 2008-11-26 10:00 ---
Doesn't happen on 64bit x86_64. Testcase which doesn't warn with 4.3:
struct xxx {
short a;
short b;
void *c;
};
void bar(struct xxx);
void foo(struct xxx *p, int i)
{
struct xxx s = *p;
if (s.a)
--- Comment #2 from pinskia at gcc dot gnu dot org 2008-11-26 02:54 ---
What the *#$^*(#^$*(:
SR.3_5 = p_1(D)-c;
SR.4_6 = VIEW_CONVERT_EXPRlong long unsigned int(*p_1(D));
SR.4_7 = SR.4_6 4294967295;
SR.5_8 = (unsigned int) SR.4_7;
s.0.c ={v} SR.3_5;
SR.6_10 =
10 matches
Mail list logo