* [Bug target/49094] ARM aligned(1) attribute is sometimes dropped
2011-05-20 22:20 [Bug target/49094] New: ARM aligned(1) attribute is sometimes dropped will_lentz at trimble dot com
@ 2011-05-31 22:20 ` ramana at gcc dot gnu.org
2011-06-05 21:52 ` mikpe at it dot uu.se
` (13 subsequent siblings)
14 siblings, 0 replies; 16+ messages in thread
From: ramana at gcc dot gnu.org @ 2011-05-31 22:20 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49094
Ramana Radhakrishnan <ramana at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |NEW
Last reconfirmed| |2011.05.31 22:04:11
CC| |ramana at gcc dot gnu.org
Ever Confirmed|0 |1
Known to fail| |4.6.0, 4.7.0
--- Comment #1 from Ramana Radhakrishnan <ramana at gcc dot gnu.org> 2011-05-31 22:04:11 UTC ---
Confirmed and copyrename appears to generate this which is where things appear
to start going pear-shaped.
test_alignment (char * m)
{
unsigned int pkt_dst$s_addr;
int D.2017;
<bb 2>:
pkt_dst$s_addr_8 = MEM[(struct ip *)m_2(D) + 7B].s_addr;
if (pkt_dst$s_addr_8 == 0)
goto <bb 4>;
else
goto <bb 3>;
<bb 3>:
<bb 4>:
# D.2017_1 = PHI <1(2), 0(3)>
return D.2017_1;
}
^ permalink raw reply [flat|nested] 16+ messages in thread
* [Bug target/49094] ARM aligned(1) attribute is sometimes dropped
2011-05-20 22:20 [Bug target/49094] New: ARM aligned(1) attribute is sometimes dropped will_lentz at trimble dot com
2011-05-31 22:20 ` [Bug target/49094] " ramana at gcc dot gnu.org
@ 2011-06-05 21:52 ` mikpe at it dot uu.se
2011-06-11 19:13 ` jamborm at gcc dot gnu.org
` (12 subsequent siblings)
14 siblings, 0 replies; 16+ messages in thread
From: mikpe at it dot uu.se @ 2011-06-05 21:52 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49094
Mikael Pettersson <mikpe at it dot uu.se> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |jamborm at gcc dot gnu.org,
| |mikpe at it dot uu.se
--- Comment #2 from Mikael Pettersson <mikpe at it dot uu.se> 2011-06-05 21:51:42 UTC ---
It's caused by r164136:
Author: jamborm
Date: Thu Sep 9 23:38:23 2010
New Revision: 164136
URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=164136
Log:
2010-09-10 Martin Jambor <mjambor@suse.cz>
PR tree-optimization/44972
* tree-sra.c: Include toplev.h.
(build_ref_for_offset): Entirely reimplemented.
...
sparc64-linux regresses similarly at this revision.
^ permalink raw reply [flat|nested] 16+ messages in thread
* [Bug target/49094] ARM aligned(1) attribute is sometimes dropped
2011-05-20 22:20 [Bug target/49094] New: ARM aligned(1) attribute is sometimes dropped will_lentz at trimble dot com
2011-05-31 22:20 ` [Bug target/49094] " ramana at gcc dot gnu.org
2011-06-05 21:52 ` mikpe at it dot uu.se
@ 2011-06-11 19:13 ` jamborm at gcc dot gnu.org
2011-06-11 23:10 ` jamborm at gcc dot gnu.org
` (11 subsequent siblings)
14 siblings, 0 replies; 16+ messages in thread
From: jamborm at gcc dot gnu.org @ 2011-06-11 19:13 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49094
--- Comment #3 from Martin Jambor <jamborm at gcc dot gnu.org> 2011-06-11 19:12:16 UTC ---
Just for the record, I am aware of this bug, I have managed to
reproduce it on the sparc64 in the compile farm and have had a look at
it a few times already (albeit so far only briefly).
A few mechanisms within SRA come into play as we generate the integer
load statement which is wrong:
pkt_dst$s_addr_8 = MEM[(struct ip *)ip_3 + 7B].s_addr;
I will continue to try to figure out what to do about this but it is
not very straightforward.
^ permalink raw reply [flat|nested] 16+ messages in thread
* [Bug target/49094] ARM aligned(1) attribute is sometimes dropped
2011-05-20 22:20 [Bug target/49094] New: ARM aligned(1) attribute is sometimes dropped will_lentz at trimble dot com
` (2 preceding siblings ...)
2011-06-11 19:13 ` jamborm at gcc dot gnu.org
@ 2011-06-11 23:10 ` jamborm at gcc dot gnu.org
2011-06-26 18:25 ` [Bug tree-optimization/49094] " jamborm at gcc dot gnu.org
` (10 subsequent siblings)
14 siblings, 0 replies; 16+ messages in thread
From: jamborm at gcc dot gnu.org @ 2011-06-11 23:10 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49094
--- Comment #4 from Martin Jambor <jamborm at gcc dot gnu.org> 2011-06-11 23:08:59 UTC ---
Created attachment 24494
--> http://gcc.gnu.org/bugzilla/attachment.cgi?id=24494
Fix - a first draft
OK, a fix is probably going to look very much like this, at least
roughly. Perhaps it would be better to employ this new
disqualification of SRA candidates only if the target is strict
aligned.
^ permalink raw reply [flat|nested] 16+ messages in thread
* [Bug tree-optimization/49094] ARM aligned(1) attribute is sometimes dropped
2011-05-20 22:20 [Bug target/49094] New: ARM aligned(1) attribute is sometimes dropped will_lentz at trimble dot com
` (3 preceding siblings ...)
2011-06-11 23:10 ` jamborm at gcc dot gnu.org
@ 2011-06-26 18:25 ` jamborm at gcc dot gnu.org
2011-06-30 13:25 ` jamborm at gcc dot gnu.org
` (9 subsequent siblings)
14 siblings, 0 replies; 16+ messages in thread
From: jamborm at gcc dot gnu.org @ 2011-06-26 18:25 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49094
--- Comment #5 from Martin Jambor <jamborm at gcc dot gnu.org> 2011-06-26 18:25:16 UTC ---
I have submitted a fix for this bug to the mailing list:
http://gcc.gnu.org/ml/gcc-patches/2011-06/msg01941.html
^ permalink raw reply [flat|nested] 16+ messages in thread
* [Bug tree-optimization/49094] ARM aligned(1) attribute is sometimes dropped
2011-05-20 22:20 [Bug target/49094] New: ARM aligned(1) attribute is sometimes dropped will_lentz at trimble dot com
` (4 preceding siblings ...)
2011-06-26 18:25 ` [Bug tree-optimization/49094] " jamborm at gcc dot gnu.org
@ 2011-06-30 13:25 ` jamborm at gcc dot gnu.org
2011-07-11 16:31 ` will_lentz at trimble dot com
` (8 subsequent siblings)
14 siblings, 0 replies; 16+ messages in thread
From: jamborm at gcc dot gnu.org @ 2011-06-30 13:25 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49094
--- Comment #6 from Martin Jambor <jamborm at gcc dot gnu.org> 2011-06-30 13:24:23 UTC ---
Author: jamborm
Date: Thu Jun 30 13:24:19 2011
New Revision: 175703
URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=175703
Log:
2011-06-30 Martin Jambor <mjambor@suse.cz>
PR tree-optimization/49094
* tree-sra.c (tree_non_mode_aligned_mem_p): New function.
(build_accesses_from_assign): Use it.
* testsuite/gcc.dg/tree-ssa/pr49094.c: New test.
Added:
trunk/gcc/testsuite/gcc.dg/tree-ssa/pr49094.c
Modified:
trunk/gcc/ChangeLog
trunk/gcc/testsuite/ChangeLog
trunk/gcc/tree-sra.c
^ permalink raw reply [flat|nested] 16+ messages in thread
* [Bug tree-optimization/49094] ARM aligned(1) attribute is sometimes dropped
2011-05-20 22:20 [Bug target/49094] New: ARM aligned(1) attribute is sometimes dropped will_lentz at trimble dot com
` (5 preceding siblings ...)
2011-06-30 13:25 ` jamborm at gcc dot gnu.org
@ 2011-07-11 16:31 ` will_lentz at trimble dot com
2011-07-11 16:55 ` jamborm at gcc dot gnu.org
` (7 subsequent siblings)
14 siblings, 0 replies; 16+ messages in thread
From: will_lentz at trimble dot com @ 2011-07-11 16:31 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49094
--- Comment #7 from will_lentz at trimble dot com 2011-07-11 16:29:52 UTC ---
(In reply to comment #6)
> Author: jamborm
> Date: Thu Jun 30 13:24:19 2011
> New Revision: 175703
>
Thanks for fixing this! Do you know if this fix will get into a 4.6.x release?
^ permalink raw reply [flat|nested] 16+ messages in thread
* [Bug tree-optimization/49094] ARM aligned(1) attribute is sometimes dropped
2011-05-20 22:20 [Bug target/49094] New: ARM aligned(1) attribute is sometimes dropped will_lentz at trimble dot com
` (6 preceding siblings ...)
2011-07-11 16:31 ` will_lentz at trimble dot com
@ 2011-07-11 16:55 ` jamborm at gcc dot gnu.org
2011-07-11 17:37 ` jamborm at gcc dot gnu.org
` (6 subsequent siblings)
14 siblings, 0 replies; 16+ messages in thread
From: jamborm at gcc dot gnu.org @ 2011-07-11 16:55 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49094
--- Comment #8 from Martin Jambor <jamborm at gcc dot gnu.org> 2011-07-11 16:54:46 UTC ---
Author: jamborm
Date: Mon Jul 11 16:54:42 2011
New Revision: 176166
URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=176166
Log:
2011-07-11 Martin Jambor <mjambor@suse.cz>
PR tree-optimization/49094
* tree-sra.c (tree_non_mode_aligned_mem_p): New function.
(build_accesses_from_assign): Use it.
* testsuite/gcc.dg/tree-ssa/pr49094.c: New test.
Added:
branches/gcc-4_6-branch/gcc/testsuite/gcc.dg/tree-ssa/pr49094.c
Modified:
branches/gcc-4_6-branch/gcc/ChangeLog
branches/gcc-4_6-branch/gcc/testsuite/ChangeLog
branches/gcc-4_6-branch/gcc/tree-sra.c
^ permalink raw reply [flat|nested] 16+ messages in thread
* [Bug tree-optimization/49094] ARM aligned(1) attribute is sometimes dropped
2011-05-20 22:20 [Bug target/49094] New: ARM aligned(1) attribute is sometimes dropped will_lentz at trimble dot com
` (7 preceding siblings ...)
2011-07-11 16:55 ` jamborm at gcc dot gnu.org
@ 2011-07-11 17:37 ` jamborm at gcc dot gnu.org
2011-07-30 12:12 ` sgh at sgh dot dk
` (5 subsequent siblings)
14 siblings, 0 replies; 16+ messages in thread
From: jamborm at gcc dot gnu.org @ 2011-07-11 17:37 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49094
Martin Jambor <jamborm at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|NEW |RESOLVED
Resolution| |FIXED
--- Comment #9 from Martin Jambor <jamborm at gcc dot gnu.org> 2011-07-11 17:36:19 UTC ---
(In reply to comment #7)
> (In reply to comment #6)
> > Author: jamborm
> > Date: Thu Jun 30 13:24:19 2011
> > New Revision: 175703
> >
>
> Thanks for fixing this! Do you know if this fix will get into a 4.6.x release?
Yeah, sorry it took so long, I almost forgot. The patch for 4.6 has
been sent to the mailing list in
http://gcc.gnu.org/ml/gcc-patches/2011-07/msg00827.html
This is now fixed on both the trunk and the 4.6 branch.
^ permalink raw reply [flat|nested] 16+ messages in thread
* [Bug tree-optimization/49094] ARM aligned(1) attribute is sometimes dropped
2011-05-20 22:20 [Bug target/49094] New: ARM aligned(1) attribute is sometimes dropped will_lentz at trimble dot com
` (8 preceding siblings ...)
2011-07-11 17:37 ` jamborm at gcc dot gnu.org
@ 2011-07-30 12:12 ` sgh at sgh dot dk
2011-07-30 12:14 ` sgh at sgh dot dk
` (4 subsequent siblings)
14 siblings, 0 replies; 16+ messages in thread
From: sgh at sgh dot dk @ 2011-07-30 12:12 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49094
--- Comment #10 from Søren Holm <sgh at sgh dot dk> 2011-07-30 12:10:57 UTC ---
Created attachment 24869
--> http://gcc.gnu.org/bugzilla/attachment.cgi?id=24869
Another testcase that fails. Even with current 4.6
With "static" on line 33 the code generated is wrong. Removing "static" the
code generated is correct.
^ permalink raw reply [flat|nested] 16+ messages in thread
* [Bug tree-optimization/49094] ARM aligned(1) attribute is sometimes dropped
2011-05-20 22:20 [Bug target/49094] New: ARM aligned(1) attribute is sometimes dropped will_lentz at trimble dot com
` (9 preceding siblings ...)
2011-07-30 12:12 ` sgh at sgh dot dk
@ 2011-07-30 12:14 ` sgh at sgh dot dk
2011-07-30 12:30 ` sgh at sgh dot dk
` (3 subsequent siblings)
14 siblings, 0 replies; 16+ messages in thread
From: sgh at sgh dot dk @ 2011-07-30 12:14 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49094
Søren Holm <sgh at sgh dot dk> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |sgh at sgh dot dk
--- Comment #11 from Søren Holm <sgh at sgh dot dk> 2011-07-30 12:13:56 UTC ---
tst2.c also fails with an alignment related problem. I'm unsue if this should
be reported in another bug.
With "static" on line 33 the code generated is this :
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
unsigned int aostk_font_strwidth(const struct aostk_font* font, const char*
str) {
const struct aostk_glyph* g = aostk_get_glyph(font, 0);
return g->advance.x;
0: e5903003 ldr r3, [r0, #3]
}
4: e5d30005 ldrb r0, [r3, #5]
8: e12fff1e bx lr
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
The first ldr-instruction is wrong afaik sinct struct aostk_font is packed.
Removing "static" fomr line 33 gives this code :
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
const struct aostk_glyph* aostk_get_glyph(const struct aostk_font* f, unsigned
int c) {
return &f->glyphs[0];
0: e5d02004 ldrb r2, [r0, #4]
4: e5d03003 ldrb r3, [r0, #3]
8: e1833402 orr r3, r3, r2, lsl #8
c: e5d02005 ldrb r2, [r0, #5]
10: e5d00006 ldrb r0, [r0, #6]
14: e1833802 orr r3, r3, r2, lsl #16
}
18: e1830c00 orr r0, r3, r0, lsl #24
1c: e12fff1e bx lr
00000020 <aostk_font_strwidth>:
const struct aostk_glyph* glyphs;
};
const struct aostk_glyph* aostk_get_glyph(const struct aostk_font* f, unsigned
int c) {
return &f->glyphs[0];
20: e5d02004 ldrb r2, [r0, #4]
24: e5d03003 ldrb r3, [r0, #3]
28: e1833402 orr r3, r3, r2, lsl #8
2c: e5d02005 ldrb r2, [r0, #5]
30: e1833802 orr r3, r3, r2, lsl #16
34: e5d02006 ldrb r2, [r0, #6]
38: e1833c02 orr r3, r3, r2, lsl #24
unsigned int aostk_font_strwidth(const struct aostk_font* font, const char*
str) {
const struct aostk_glyph* g = aostk_get_glyph(font, 0);
return g->advance.x;
}
3c: e5d30005 ldrb r0, [r3, #5]
40: e12fff1e bx lr
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Notice in aostk_get_glyph that the ldrb-instructions are used instead of ldr.
^ permalink raw reply [flat|nested] 16+ messages in thread
* [Bug tree-optimization/49094] ARM aligned(1) attribute is sometimes dropped
2011-05-20 22:20 [Bug target/49094] New: ARM aligned(1) attribute is sometimes dropped will_lentz at trimble dot com
` (10 preceding siblings ...)
2011-07-30 12:14 ` sgh at sgh dot dk
@ 2011-07-30 12:30 ` sgh at sgh dot dk
2011-07-30 12:39 ` sgh at sgh dot dk
` (2 subsequent siblings)
14 siblings, 0 replies; 16+ messages in thread
From: sgh at sgh dot dk @ 2011-07-30 12:30 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49094
--- Comment #12 from Søren Holm <sgh at sgh dot dk> 2011-07-30 12:30:25 UTC ---
Oh... I just realized that the failing case does not fail because of the first
ldr-instruction. It fails becasue of something else. Maybe you guys have a
better eye for ARM-assembler to be able to verify that the code.
^ permalink raw reply [flat|nested] 16+ messages in thread
* [Bug tree-optimization/49094] ARM aligned(1) attribute is sometimes dropped
2011-05-20 22:20 [Bug target/49094] New: ARM aligned(1) attribute is sometimes dropped will_lentz at trimble dot com
` (11 preceding siblings ...)
2011-07-30 12:30 ` sgh at sgh dot dk
@ 2011-07-30 12:39 ` sgh at sgh dot dk
2011-07-30 17:16 ` jamborm at gcc dot gnu.org
2011-07-31 15:19 ` sgh at sgh dot dk
14 siblings, 0 replies; 16+ messages in thread
From: sgh at sgh dot dk @ 2011-07-30 12:39 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49094
--- Comment #13 from Søren Holm <sgh at sgh dot dk> 2011-07-30 12:37:41 UTC ---
gcc 4.4.6 generates the following code with the "static" keyword
unsigned int aostk_font_strwidth(const struct aostk_font* font, const char*
str) {
0: e5d02004 ldrb r2, [r0, #4]
4: e5d03003 ldrb r3, [r0, #3]
8: e5d01005 ldrb r1, [r0, #5]
c: e1833402 orr r3, r3, r2, lsl #8
10: e5d02006 ldrb r2, [r0, #6]
14: e1833801 orr r3, r3, r1, lsl #16
18: e1833c02 orr r3, r3, r2, lsl #24
const struct aostk_glyph* g = aostk_get_glyph(font, 0);
return g->advance.x;
}
1c: e5d30005 ldrb r0, [r3, #5]
20: e12fff1e bx lr
^ permalink raw reply [flat|nested] 16+ messages in thread
* [Bug tree-optimization/49094] ARM aligned(1) attribute is sometimes dropped
2011-05-20 22:20 [Bug target/49094] New: ARM aligned(1) attribute is sometimes dropped will_lentz at trimble dot com
` (12 preceding siblings ...)
2011-07-30 12:39 ` sgh at sgh dot dk
@ 2011-07-30 17:16 ` jamborm at gcc dot gnu.org
2011-07-31 15:19 ` sgh at sgh dot dk
14 siblings, 0 replies; 16+ messages in thread
From: jamborm at gcc dot gnu.org @ 2011-07-30 17:16 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49094
--- Comment #14 from Martin Jambor <jamborm at gcc dot gnu.org> 2011-07-30 17:15:12 UTC ---
(In reply to comment #11)
> tst2.c also fails with an alignment related problem. I'm unsue if this should
> be reported in another bug.
>
It it fails with a current checkout of the trunk or the 4.6 branch it
is most probably a different issue and should be reported in a
separate bug.
So please file a new bug, post its number here, and, if the testcase
does not fail with -fno-tree-sra, CC me. Thanks.
^ permalink raw reply [flat|nested] 16+ messages in thread
* [Bug tree-optimization/49094] ARM aligned(1) attribute is sometimes dropped
2011-05-20 22:20 [Bug target/49094] New: ARM aligned(1) attribute is sometimes dropped will_lentz at trimble dot com
` (13 preceding siblings ...)
2011-07-30 17:16 ` jamborm at gcc dot gnu.org
@ 2011-07-31 15:19 ` sgh at sgh dot dk
14 siblings, 0 replies; 16+ messages in thread
From: sgh at sgh dot dk @ 2011-07-31 15:19 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49094
--- Comment #15 from Søren Holm <sgh at sgh dot dk> 2011-07-31 15:18:19 UTC ---
I have reported the bug as #49923
-fno-tree-sra does not help.
I have bisected it to commit trunk@164135
2010-09-10 Martin Jambor <mjambor@suse.cz>
PR tree-optimization/44972
* ipa-prop.c (ipa_modify_call_arguments): Build MEM_REF instead of
calling build_ref_for_offset.
* testsuite/g++.dg/torture/pr34850.C: Remove expected warning.
^ permalink raw reply [flat|nested] 16+ messages in thread