--- Comment #10 from pinskia at gcc dot gnu dot org 2005-11-02 15:47
---
Here is a further reduced testase:
typedef struct {
union {unsigned Xl_ui;} Ul_i;
union {unsigned Xl_uf;} Ul_f;
} l_fp;
void dolfptoa(short ndec)
{
l_fp work;
work.Ul_f.Xl_uf = 0x535f3d8;
while (ndec 0)
--- Comment #11 from pinskia at gcc dot gnu dot org 2005-11-02 15:53
---
The following fails with -O1 -fno-tree-sra.
typedef struct {
struct {unsigned Xl_ui;} Ul_i;
struct {unsigned Xl_uf;} Ul_f;
} l_fp;
void dolfptoa(short ndec)
{
l_fp work;
work.Ul_f.Xl_uf = 0x535f3d8;
--- Comment #12 from pinskia at gcc dot gnu dot org 2005-11-02 16:03
---
Here is another more reduced testcase (still at -O1 -fno-tree-sra):
typedef struct {
unsigned a;
} l_fp;
void dolfptoa(short ndec)
{
l_fp work;
unsigned workUl_fXl_uf;
work.a = 0x535f3d8;
while (ndec 0)
--- Comment #13 from pinskia at gcc dot gnu dot org 2005-11-02 16:12
---
(In reply to comment #12)
Here is another more reduced testcase (still at -O1 -fno-tree-sra):
That testcase is invalid, the one which is valid:
ypedef struct {
unsigned a;
} l_fp;
void dolfptoa(short ndec)
{
--- Comment #14 from pinskia at gcc dot gnu dot org 2005-11-02 16:39
---
This is as far as I can reduce it, -O1:
typedef union {
unsigned a;
} l_fp;
int main(void)
{
l_fp work;
unsigned workUl_fXl_uf = 0x;
int ndec = 10;
do {
ndec--;
work.a = 0;
work.a =
--- Comment #15 from pinskia at gcc dot gnu dot org 2005-11-02 17:02
---
A link to the changes (so I can be a little lazy):
http://gcc.gnu.org/viewcvs?view=revrev=101841
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24627
--- Comment #16 from dnovillo at gcc dot gnu dot org 2005-11-02 19:40
---
testing patch
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24627
--- Comment #1 from mueller at kde dot org 2005-11-01 23:06 ---
Created an attachment (id=10110)
-- (http://gcc.gnu.org/bugzilla/attachment.cgi?id=10110action=view)
testcase
-O1 or higher exposes the bug.
-fno-tree-dce or undoing commit 101841 fixes it.
--
--- Comment #2 from steven at gcc dot gnu dot org 2005-11-01 23:08 ---
-fno-tree-loop-im fixes it too, fwiw.
--
steven at gcc dot gnu dot org changed:
What|Removed |Added
--- Comment #3 from steven at gcc dot gnu dot org 2005-11-01 23:09 ---
Most likely aliasing related.
--
steven at gcc dot gnu dot org changed:
What|Removed |Added
--- Comment #4 from steven at gcc dot gnu dot org 2005-11-01 23:09 ---
Mark, this is a new wrong-code bug.
Could you look at it and set a priority please.
--
steven at gcc dot gnu dot org changed:
What|Removed |Added
--
pinskia at gcc dot gnu dot org changed:
What|Removed |Added
GCC host triplet|i686-gnu-linux |
GCC target triplet||i686-gnu-linux
--- Comment #5 from pinskia at gcc dot gnu dot org 2005-11-01 23:12 ---
Note this is union related as if I remove the unions, it works.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24627
--- Comment #6 from pinskia at gcc dot gnu dot org 2005-11-01 23:22 ---
Here is a little cleaned up testcase without any do {} while(0);:
extern void abort (void) __attribute__ ((noreturn));
typedef unsigned int u_int32;
typedef struct {
union {u_int32 Xl_ui;} Ul_i;
union {u_int32
--- Comment #7 from pinskia at gcc dot gnu dot org 2005-11-01 23:32 ---
wtf:
- # SFT.1_22 = V_MUST_DEF SFT.1_19;
+ # SFT.1_22 = V_MUST_DEF SFT.1_11;
work.Ul_i.Xl_ui = D.1298_21;
...
- # SFT.1_10 = PHI SFT.1_12(0), SFT.1_9(11);
That is just wrong. DCE is doing something
--- Comment #8 from pinskia at gcc dot gnu dot org 2005-11-01 23:34 ---
Eliminating unnecessary statements:
Deleting : SFT.1_10 = PHI SFT.1_12(0), SFT.1_9(11);
Deleting : work.Ul_i.Xl_ui = 0;
Deleting : work.Ul_i.Xl_ui = 0;
Deleting : work.Ul_f.Xl_uf = D.1302_36;
Deleting :
--- Comment #9 from mmitchel at gcc dot gnu dot org 2005-11-02 00:55
---
Miscompilation of a popular package on a major architecture; showstopper.
--
mmitchel at gcc dot gnu dot org changed:
What|Removed |Added
--
dnovillo at gcc dot gnu dot org changed:
What|Removed |Added
CC|dnovillo at redhat dot com |
AssignedTo|unassigned at gcc dot gnu |dnovillo at gcc
18 matches
Mail list logo