* [Bug middle-end/54386] Unaligned mem load wrongly generated for inlined inline/static function
2012-08-27 19:05 [Bug middle-end/54386] New: Unaligned mem load wrongly generated for inlined inline/static function olegendo at gcc dot gnu.org
@ 2012-09-06 14:50 ` gjl at gcc dot gnu.org
2012-09-06 16:04 ` olegendo at gcc dot gnu.org
` (13 subsequent siblings)
14 siblings, 0 replies; 16+ messages in thread
From: gjl at gcc dot gnu.org @ 2012-09-06 14:50 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54386
Georg-Johann Lay <gjl at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |gjl at gcc dot gnu.org
--- Comment #1 from Georg-Johann Lay <gjl at gcc dot gnu.org> 2012-09-06 14:50:41 UTC ---
Who expands the 8-bit loads? Is there an implicit memcpy, expanded in movmem*?
^ permalink raw reply [flat|nested] 16+ messages in thread
* [Bug middle-end/54386] Unaligned mem load wrongly generated for inlined inline/static function
2012-08-27 19:05 [Bug middle-end/54386] New: Unaligned mem load wrongly generated for inlined inline/static function olegendo at gcc dot gnu.org
2012-09-06 14:50 ` [Bug middle-end/54386] " gjl at gcc dot gnu.org
@ 2012-09-06 16:04 ` olegendo at gcc dot gnu.org
2012-10-29 20:38 ` olegendo at gcc dot gnu.org
` (12 subsequent siblings)
14 siblings, 0 replies; 16+ messages in thread
From: olegendo at gcc dot gnu.org @ 2012-09-06 16:04 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54386
--- Comment #2 from Oleg Endo <olegendo at gcc dot gnu.org> 2012-09-06 16:03:50 UTC ---
(In reply to comment #1)
> Who expands the 8-bit loads? Is there an implicit memcpy, expanded in movmem*?
I haven't investigated further into the issue. The logs in the original
description are from the RTL expand pass, i.e. the first RTL pass.
^ permalink raw reply [flat|nested] 16+ messages in thread
* [Bug middle-end/54386] Unaligned mem load wrongly generated for inlined inline/static function
2012-08-27 19:05 [Bug middle-end/54386] New: Unaligned mem load wrongly generated for inlined inline/static function olegendo at gcc dot gnu.org
2012-09-06 14:50 ` [Bug middle-end/54386] " gjl at gcc dot gnu.org
2012-09-06 16:04 ` olegendo at gcc dot gnu.org
@ 2012-10-29 20:38 ` olegendo at gcc dot gnu.org
2012-10-29 22:18 ` mikpe at it dot uu.se
` (11 subsequent siblings)
14 siblings, 0 replies; 16+ messages in thread
From: olegendo at gcc dot gnu.org @ 2012-10-29 20:38 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54386
Oleg Endo <olegendo at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Target|sh*-*-* |sh*-*-* arm*
Status|UNCONFIRMED |NEW
Last reconfirmed| |2012-10-29
Ever Confirmed|0 |1
--- Comment #3 from Oleg Endo <olegendo at gcc dot gnu.org> 2012-10-29 20:38:08 UTC ---
I've checked this issue again on rev 192482. It seems to be target
independent, as it also happens on ARM.
The following:
static inline int readint (int* x)
{
return *x;
}
int test (int* x)
{
return readint (x);
}
compiles to (-O2):
test:
ldrb r3, [r0]
ldrb r1, [r0, #1]
ldrb r2, [r0, #2]
orr r3, r3, r1, asl #8
ldrb r0, [r0, #3]
orr r3, r3, r2, asl #16
orr r0, r3, r0, asl #24
bx lr
^ permalink raw reply [flat|nested] 16+ messages in thread
* [Bug middle-end/54386] Unaligned mem load wrongly generated for inlined inline/static function
2012-08-27 19:05 [Bug middle-end/54386] New: Unaligned mem load wrongly generated for inlined inline/static function olegendo at gcc dot gnu.org
` (2 preceding siblings ...)
2012-10-29 20:38 ` olegendo at gcc dot gnu.org
@ 2012-10-29 22:18 ` mikpe at it dot uu.se
2012-10-29 22:23 ` [Bug middle-end/54386] [4.8 Regression] " olegendo at gcc dot gnu.org
` (10 subsequent siblings)
14 siblings, 0 replies; 16+ messages in thread
From: mikpe at it dot uu.se @ 2012-10-29 22:18 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54386
Mikael Pettersson <mikpe at it dot uu.se> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |mikpe at it dot uu.se
--- Comment #4 from Mikael Pettersson <mikpe at it dot uu.se> 2012-10-29 22:18:16 UTC ---
(In reply to comment #3)
> I've checked this issue again on rev 192482. It seems to be target
> independent, as it also happens on ARM.
> The following:
>
> static inline int readint (int* x)
> {
> return *x;
> }
>
> int test (int* x)
> {
> return readint (x);
> }
>
> compiles to (-O2):
>
> test:
> ldrb r3, [r0]
> ldrb r1, [r0, #1]
> ldrb r2, [r0, #2]
> orr r3, r3, r1, asl #8
> ldrb r0, [r0, #3]
> orr r3, r3, r2, asl #16
> orr r0, r3, r0, asl #24
> bx lr
I see this poor code too on armv5tel-linux-gnueabi with 4.8-20121028.
4.7 and 4.6 generate just two instructions for test: a ldr and bx.
^ permalink raw reply [flat|nested] 16+ messages in thread
* [Bug middle-end/54386] [4.8 Regression] Unaligned mem load wrongly generated for inlined inline/static function
2012-08-27 19:05 [Bug middle-end/54386] New: Unaligned mem load wrongly generated for inlined inline/static function olegendo at gcc dot gnu.org
` (3 preceding siblings ...)
2012-10-29 22:18 ` mikpe at it dot uu.se
@ 2012-10-29 22:23 ` olegendo at gcc dot gnu.org
2012-10-30 9:05 ` olegendo at gcc dot gnu.org
` (9 subsequent siblings)
14 siblings, 0 replies; 16+ messages in thread
From: olegendo at gcc dot gnu.org @ 2012-10-29 22:23 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54386
Oleg Endo <olegendo at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Summary|Unaligned mem load wrongly |[4.8 Regression] Unaligned
|generated for inlined |mem load wrongly generated
|inline/static function |for inlined inline/static
| |function
--- Comment #5 from Oleg Endo <olegendo at gcc dot gnu.org> 2012-10-29 22:23:25 UTC ---
(In reply to comment #4)
>
> I see this poor code too on armv5tel-linux-gnueabi with 4.8-20121028.
> 4.7 and 4.6 generate just two instructions for test: a ldr and bx.
Thanks for checking it on earlier versions.
^ permalink raw reply [flat|nested] 16+ messages in thread
* [Bug middle-end/54386] [4.8 Regression] Unaligned mem load wrongly generated for inlined inline/static function
2012-08-27 19:05 [Bug middle-end/54386] New: Unaligned mem load wrongly generated for inlined inline/static function olegendo at gcc dot gnu.org
` (4 preceding siblings ...)
2012-10-29 22:23 ` [Bug middle-end/54386] [4.8 Regression] " olegendo at gcc dot gnu.org
@ 2012-10-30 9:05 ` olegendo at gcc dot gnu.org
2012-10-30 19:28 ` mikpe at it dot uu.se
` (8 subsequent siblings)
14 siblings, 0 replies; 16+ messages in thread
From: olegendo at gcc dot gnu.org @ 2012-10-30 9:05 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54386
--- Comment #6 from Oleg Endo <olegendo at gcc dot gnu.org> 2012-10-30 09:04:37 UTC ---
Just for the record, this seems to happen only for mem loads. Mem stores
expand as expected.
^ permalink raw reply [flat|nested] 16+ messages in thread
* [Bug middle-end/54386] [4.8 Regression] Unaligned mem load wrongly generated for inlined inline/static function
2012-08-27 19:05 [Bug middle-end/54386] New: Unaligned mem load wrongly generated for inlined inline/static function olegendo at gcc dot gnu.org
` (5 preceding siblings ...)
2012-10-30 9:05 ` olegendo at gcc dot gnu.org
@ 2012-10-30 19:28 ` mikpe at it dot uu.se
2012-10-31 8:24 ` ebotcazou at gcc dot gnu.org
` (7 subsequent siblings)
14 siblings, 0 replies; 16+ messages in thread
From: mikpe at it dot uu.se @ 2012-10-30 19:28 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54386
Mikael Pettersson <mikpe at it dot uu.se> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |jamborm at gcc dot gnu.org
--- Comment #7 from Mikael Pettersson <mikpe at it dot uu.se> 2012-10-30 19:28:15 UTC ---
I'm seeing the same code quality regression on sparc64-linux, another
strict-alignment target.
The regression started with r185470:
http://gcc.gnu.org/ml/gcc-cvs/2012-03/msg00800.html
http://gcc.gnu.org/ml/gcc-patches/2012-03/msg00989.html
Patch author CC:d.
^ permalink raw reply [flat|nested] 16+ messages in thread
* [Bug middle-end/54386] [4.8 Regression] Unaligned mem load wrongly generated for inlined inline/static function
2012-08-27 19:05 [Bug middle-end/54386] New: Unaligned mem load wrongly generated for inlined inline/static function olegendo at gcc dot gnu.org
` (6 preceding siblings ...)
2012-10-30 19:28 ` mikpe at it dot uu.se
@ 2012-10-31 8:24 ` ebotcazou at gcc dot gnu.org
2012-11-27 20:47 ` [Bug tree-optimization/54386] " jamborm at gcc dot gnu.org
` (6 subsequent siblings)
14 siblings, 0 replies; 16+ messages in thread
From: ebotcazou at gcc dot gnu.org @ 2012-10-31 8:24 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54386
Eric Botcazou <ebotcazou at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Target|sh*-*-* arm* |sh*-*-* arm*-*-* sparc*-*-*
CC| |ebotcazou at gcc dot
| |gnu.org
Target Milestone|--- |4.8.0
Severity|normal |major
--- Comment #8 from Eric Botcazou <ebotcazou at gcc dot gnu.org> 2012-10-31 08:24:00 UTC ---
Ugh. ARM and SPARC are primary targets, so this is a major regression.
^ permalink raw reply [flat|nested] 16+ messages in thread
* [Bug tree-optimization/54386] [4.8 Regression] Unaligned mem load wrongly generated for inlined inline/static function
2012-08-27 19:05 [Bug middle-end/54386] New: Unaligned mem load wrongly generated for inlined inline/static function olegendo at gcc dot gnu.org
` (7 preceding siblings ...)
2012-10-31 8:24 ` ebotcazou at gcc dot gnu.org
@ 2012-11-27 20:47 ` jamborm at gcc dot gnu.org
2012-11-30 16:12 ` jamborm at gcc dot gnu.org
` (5 subsequent siblings)
14 siblings, 0 replies; 16+ messages in thread
From: jamborm at gcc dot gnu.org @ 2012-11-27 20:47 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54386
--- Comment #9 from Martin Jambor <jamborm at gcc dot gnu.org> 2012-11-27 20:46:58 UTC ---
I have proposed a patch on the mailing list:
http://gcc.gnu.org/ml/gcc-patches/2012-11/msg02265.html
Any testing, especially on strict-alignment platforms I do not have access to,
would be very welcome.
^ permalink raw reply [flat|nested] 16+ messages in thread
* [Bug tree-optimization/54386] [4.8 Regression] Unaligned mem load wrongly generated for inlined inline/static function
2012-08-27 19:05 [Bug middle-end/54386] New: Unaligned mem load wrongly generated for inlined inline/static function olegendo at gcc dot gnu.org
` (8 preceding siblings ...)
2012-11-27 20:47 ` [Bug tree-optimization/54386] " jamborm at gcc dot gnu.org
@ 2012-11-30 16:12 ` jamborm at gcc dot gnu.org
2012-12-03 13:28 ` jamborm at gcc dot gnu.org
` (4 subsequent siblings)
14 siblings, 0 replies; 16+ messages in thread
From: jamborm at gcc dot gnu.org @ 2012-11-30 16:12 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54386
--- Comment #10 from Martin Jambor <jamborm at gcc dot gnu.org> 2012-11-30 16:11:43 UTC ---
Author: jamborm
Date: Fri Nov 30 16:11:33 2012
New Revision: 193998
URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=193998
Log:
2012-11-30 Martin Jambor <mjambor@suse.cz>
PR middle-end/52890
PR tree-optimization/55415
PR tree-optimization/54386
PR target/55448
* ipa-prop.c (ipa_modify_call_arguments): Be optimistic when
get_pointer_alignment_1 returns false and the base was not a
dereference.
* tree-sra.c (access_precludes_ipa_sra_p): New parameter req_align,
added check for required alignment. Update the user.
* testsuite/gcc.dg/ipa/ipa-sra-7.c: New test.
* testsuite/gcc.dg/ipa/ipa-sra-8.c: Likewise.
* testsuite/gcc.dg/ipa/ipa-sra-9.c: Likewise.
* testsuite/gcc.target/i386/pr55448.c: Likewise.
Added:
trunk/gcc/testsuite/gcc.dg/ipa/ipa-sra-7.c
trunk/gcc/testsuite/gcc.dg/ipa/ipa-sra-8.c
trunk/gcc/testsuite/gcc.dg/ipa/ipa-sra-9.c
trunk/gcc/testsuite/gcc.target/i386/pr55448.c
Modified:
trunk/gcc/ChangeLog
trunk/gcc/ipa-prop.c
trunk/gcc/testsuite/ChangeLog
trunk/gcc/tree-sra.c
^ permalink raw reply [flat|nested] 16+ messages in thread
* [Bug tree-optimization/54386] [4.8 Regression] Unaligned mem load wrongly generated for inlined inline/static function
2012-08-27 19:05 [Bug middle-end/54386] New: Unaligned mem load wrongly generated for inlined inline/static function olegendo at gcc dot gnu.org
` (9 preceding siblings ...)
2012-11-30 16:12 ` jamborm at gcc dot gnu.org
@ 2012-12-03 13:28 ` jamborm at gcc dot gnu.org
2012-12-03 13:29 ` jamborm at gcc dot gnu.org
` (3 subsequent siblings)
14 siblings, 0 replies; 16+ messages in thread
From: jamborm at gcc dot gnu.org @ 2012-12-03 13:28 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54386
Martin Jambor <jamborm at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |rth at gcc dot gnu.org
--- Comment #11 from Martin Jambor <jamborm at gcc dot gnu.org> 2012-12-03 13:27:50 UTC ---
*** Bug 55415 has been marked as a duplicate of this bug. ***
^ permalink raw reply [flat|nested] 16+ messages in thread
* [Bug tree-optimization/54386] [4.8 Regression] Unaligned mem load wrongly generated for inlined inline/static function
2012-08-27 19:05 [Bug middle-end/54386] New: Unaligned mem load wrongly generated for inlined inline/static function olegendo at gcc dot gnu.org
` (10 preceding siblings ...)
2012-12-03 13:28 ` jamborm at gcc dot gnu.org
@ 2012-12-03 13:29 ` jamborm at gcc dot gnu.org
2012-12-03 13:32 ` jamborm at gcc dot gnu.org
` (2 subsequent siblings)
14 siblings, 0 replies; 16+ messages in thread
From: jamborm at gcc dot gnu.org @ 2012-12-03 13:29 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54386
Martin Jambor <jamborm at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |kretz at kde dot org
--- Comment #12 from Martin Jambor <jamborm at gcc dot gnu.org> 2012-12-03 13:28:48 UTC ---
*** Bug 55448 has been marked as a duplicate of this bug. ***
^ permalink raw reply [flat|nested] 16+ messages in thread
* [Bug tree-optimization/54386] [4.8 Regression] Unaligned mem load wrongly generated for inlined inline/static function
2012-08-27 19:05 [Bug middle-end/54386] New: Unaligned mem load wrongly generated for inlined inline/static function olegendo at gcc dot gnu.org
` (11 preceding siblings ...)
2012-12-03 13:29 ` jamborm at gcc dot gnu.org
@ 2012-12-03 13:32 ` jamborm at gcc dot gnu.org
2012-12-04 9:53 ` olegendo at gcc dot gnu.org
2013-02-04 22:42 ` olegendo at gcc dot gnu.org
14 siblings, 0 replies; 16+ messages in thread
From: jamborm at gcc dot gnu.org @ 2012-12-03 13:32 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54386
Martin Jambor <jamborm at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|NEW |RESOLVED
Resolution| |FIXED
--- Comment #13 from Martin Jambor <jamborm at gcc dot gnu.org> 2012-12-03 13:32:36 UTC ---
This is now fixed. Thanks for patience and all the testcases.
^ permalink raw reply [flat|nested] 16+ messages in thread
* [Bug tree-optimization/54386] [4.8 Regression] Unaligned mem load wrongly generated for inlined inline/static function
2012-08-27 19:05 [Bug middle-end/54386] New: Unaligned mem load wrongly generated for inlined inline/static function olegendo at gcc dot gnu.org
` (12 preceding siblings ...)
2012-12-03 13:32 ` jamborm at gcc dot gnu.org
@ 2012-12-04 9:53 ` olegendo at gcc dot gnu.org
2013-02-04 22:42 ` olegendo at gcc dot gnu.org
14 siblings, 0 replies; 16+ messages in thread
From: olegendo at gcc dot gnu.org @ 2012-12-04 9:53 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54386
--- Comment #14 from Oleg Endo <olegendo at gcc dot gnu.org> 2012-12-04 09:53:05 UTC ---
(In reply to comment #13)
> This is now fixed. Thanks for patience and all the testcases.
Great, thanks!
I'll add an SH testcase for this, too.
^ permalink raw reply [flat|nested] 16+ messages in thread
* [Bug tree-optimization/54386] [4.8 Regression] Unaligned mem load wrongly generated for inlined inline/static function
2012-08-27 19:05 [Bug middle-end/54386] New: Unaligned mem load wrongly generated for inlined inline/static function olegendo at gcc dot gnu.org
` (13 preceding siblings ...)
2012-12-04 9:53 ` olegendo at gcc dot gnu.org
@ 2013-02-04 22:42 ` olegendo at gcc dot gnu.org
14 siblings, 0 replies; 16+ messages in thread
From: olegendo at gcc dot gnu.org @ 2013-02-04 22:42 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54386
--- Comment #15 from Oleg Endo <olegendo at gcc dot gnu.org> 2013-02-04 22:41:47 UTC ---
Author: olegendo
Date: Mon Feb 4 22:41:44 2013
New Revision: 195742
URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=195742
Log:
PR tree-optimization/54386
* gcc.target/sh/pr54386.c: New.
Added:
trunk/gcc/testsuite/gcc.target/sh/pr54386.c
Modified:
trunk/gcc/testsuite/ChangeLog
^ permalink raw reply [flat|nested] 16+ messages in thread