public inbox for gcc-bugs@sourceware.org help / color / mirror / Atom feed
* [Bug rtl-optimization/47866] New: gcc.dg/torture/vector-2.c fails on IA64 @ 2011-02-23 23:29 sje at cup dot hp.com 2011-03-06 19:07 ` [Bug rtl-optimization/47866] [4.5/4.6 Regression] " ubizjak at gmail dot com ` (10 more replies) 0 siblings, 11 replies; 12+ messages in thread From: sje at cup dot hp.com @ 2011-02-23 23:29 UTC (permalink / raw) To: gcc-bugs http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47866 Summary: gcc.dg/torture/vector-2.c fails on IA64 Product: gcc Version: 4.6.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: rtl-optimization AssignedTo: unassigned@gcc.gnu.org ReportedBy: sje@cup.hp.com gcc.dg/torture/vector-2.c is failing on Linux and HP-UX IA64 platforms since r165240 which is Richard Henderson's fix for PR rtl-opt/33721. This may be a target specific bug but the change that caused the failure to show up is not target specific. gcc.dg/torture/vector-2.c fails at -O2, but passes at -O0 or -O1. With the latest sources I can use this cutdown test case to see the difference: #define vector __attribute__((vector_size(16) )) vector int f0(vector int t, int a) { ((int*)&t)[0] = a; return t; } vector int f1(vector int t, int a) { ((int*)&t)[1] = a; return t; } int main(void) { vector int a = {0, 0, 0, 0}; vector int a0; a0 = f0(a, 1); printf("%d %d %d %d\n", a0[0], a0[1], a0[2], a0[3]); a0 = f1(a, 1); printf("%d %d %d %d\n", a0[0], a0[1], a0[2], a0[3]); return 0; } At -O0 or -O1 it prints: 1 0 0 0 0 1 0 0 At -O2 it prints: 1 0 0 0 0 0 0 0 ^ permalink raw reply [flat|nested] 12+ messages in thread
* [Bug rtl-optimization/47866] [4.5/4.6 Regression] gcc.dg/torture/vector-2.c fails on IA64 2011-02-23 23:29 [Bug rtl-optimization/47866] New: gcc.dg/torture/vector-2.c fails on IA64 sje at cup dot hp.com @ 2011-03-06 19:07 ` ubizjak at gmail dot com 2011-03-07 10:38 ` rguenth at gcc dot gnu.org ` (9 subsequent siblings) 10 siblings, 0 replies; 12+ messages in thread From: ubizjak at gmail dot com @ 2011-03-06 19:07 UTC (permalink / raw) To: gcc-bugs http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47866 Uros Bizjak <ubizjak at gmail dot com> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW Last reconfirmed| |2011.03.06 19:07:33 Target Milestone|--- |4.5.3 Summary|gcc.dg/torture/vector-2.c |[4.5/4.6 Regression] |fails on IA64 |gcc.dg/torture/vector-2.c | |fails on IA64 Ever Confirmed|0 |1 --- Comment #1 from Uros Bizjak <ubizjak at gmail dot com> 2011-03-06 19:07:33 UTC --- Confirmed, a regression due to the failure in the testsuite. ^ permalink raw reply [flat|nested] 12+ messages in thread
* [Bug rtl-optimization/47866] [4.5/4.6 Regression] gcc.dg/torture/vector-2.c fails on IA64 2011-02-23 23:29 [Bug rtl-optimization/47866] New: gcc.dg/torture/vector-2.c fails on IA64 sje at cup dot hp.com 2011-03-06 19:07 ` [Bug rtl-optimization/47866] [4.5/4.6 Regression] " ubizjak at gmail dot com @ 2011-03-07 10:38 ` rguenth at gcc dot gnu.org 2011-03-08 17:05 ` jakub at gcc dot gnu.org ` (8 subsequent siblings) 10 siblings, 0 replies; 12+ messages in thread From: rguenth at gcc dot gnu.org @ 2011-03-07 10:38 UTC (permalink / raw) To: gcc-bugs http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47866 Richard Guenther <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords| |wrong-code Target| |ia64-*-* Priority|P3 |P2 ^ permalink raw reply [flat|nested] 12+ messages in thread
* [Bug rtl-optimization/47866] [4.5/4.6 Regression] gcc.dg/torture/vector-2.c fails on IA64 2011-02-23 23:29 [Bug rtl-optimization/47866] New: gcc.dg/torture/vector-2.c fails on IA64 sje at cup dot hp.com 2011-03-06 19:07 ` [Bug rtl-optimization/47866] [4.5/4.6 Regression] " ubizjak at gmail dot com 2011-03-07 10:38 ` rguenth at gcc dot gnu.org @ 2011-03-08 17:05 ` jakub at gcc dot gnu.org 2011-03-08 17:41 ` jakub at gcc dot gnu.org ` (7 subsequent siblings) 10 siblings, 0 replies; 12+ messages in thread From: jakub at gcc dot gnu.org @ 2011-03-08 17:05 UTC (permalink / raw) To: gcc-bugs http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47866 Jakub Jelinek <jakub at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |jakub at gcc dot gnu.org --- Comment #2 from Jakub Jelinek <jakub at gcc dot gnu.org> 2011-03-08 17:05:07 UTC --- I think the bug here is during expansion. We are expanding: vector(4) int t; vector(4) int t; vector(4) int a0; int D.2001; int D.2000; int D.1999; int D.1998; <bb 2>: t = { 0, 0, 0, 0 }; BIT_FIELD_REF <t, 32, 0> = 1; a0_18 = t; D.1998_3 = BIT_FIELD_REF <a0_18, 32, 0>; D.1999_4 = BIT_FIELD_REF <a0_18, 32, 32>; D.2000_5 = BIT_FIELD_REF <a0_18, 32, 64>; D.2001_6 = BIT_FIELD_REF <a0_18, 32, 96>; printf ("%d %d %d %d\n", D.1998_3, D.1999_4, D.2000_5, D.2001_6); t = { 0, 0, 0, 0 }; BIT_FIELD_REF <t, 32, 32> = 1; a0_19 = t; D.1998_8 = BIT_FIELD_REF <a0_19, 32, 0>; D.1999_9 = BIT_FIELD_REF <a0_19, 32, 32>; D.2000_10 = BIT_FIELD_REF <a0_19, 32, 64>; D.2001_11 = BIT_FIELD_REF <a0_19, 32, 96>; printf ("%d %d %d %d\n", D.1998_8, D.1999_9, D.2000_10, D.2001_11); All the memory references are MEM_SCALAR_P, except that the stores BIT_FIELD_REF <t, 32, 0> = 1 and BIT_FIELD_REF <t, 32, 32> = 1 use MEM_IN_STRUCT_P because store_field decides to override it (set_mem_attributes doesn't override when it already has one or another one, but store_field does). This, together with the fact that BIT_FIELD_REF <t, 32, 32> = 1 store happens to use an address from post_modify and aliasing doesn't figure out it is sfp based and what is the offset results in fixed_scalar_and_varying_struct_p returning true (where fixed scalar is e.g. the BIT_FIELD_REF <a0_19, 64, 0> or BIT_FIELD_REF <a0_19, 64, 64> access from which BIT_FIELD_REF <a0_19, 32, XX> is derived, and "varying" "struct" is the BIT_FIELD_REF <t, 32, 32> = 1 store. Thus sched1 reorders the reads after the store. --- expr.c (revision 170779) +++ expr.c (working copy) @@ -5924,7 +5924,8 @@ store_field (rtx target, HOST_WIDE_INT b if (to_rtx == target) to_rtx = copy_rtx (to_rtx); - MEM_SET_IN_STRUCT_P (to_rtx, 1); + if (!MEM_SCALAR_P (to_rtx)) + MEM_SET_IN_STRUCT_P (to_rtx, 1); if (!MEM_KEEP_ALIAS_SET_P (to_rtx) && MEM_ALIAS_SET (to_rtx) != 0) set_mem_alias_set (to_rtx, alias_set); fixes this, though the generated code is still very much suboptimal (uses ld8.a before the store (though, in the same insn group), thus I think it will always find out that it changed and branch to a slow path doing the load again. ^ permalink raw reply [flat|nested] 12+ messages in thread
* [Bug rtl-optimization/47866] [4.5/4.6 Regression] gcc.dg/torture/vector-2.c fails on IA64 2011-02-23 23:29 [Bug rtl-optimization/47866] New: gcc.dg/torture/vector-2.c fails on IA64 sje at cup dot hp.com ` (2 preceding siblings ...) 2011-03-08 17:05 ` jakub at gcc dot gnu.org @ 2011-03-08 17:41 ` jakub at gcc dot gnu.org 2011-03-08 18:41 ` jakub at gcc dot gnu.org ` (6 subsequent siblings) 10 siblings, 0 replies; 12+ messages in thread From: jakub at gcc dot gnu.org @ 2011-03-08 17:41 UTC (permalink / raw) To: gcc-bugs http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47866 --- Comment #3 from Jakub Jelinek <jakub at gcc dot gnu.org> 2011-03-08 17:40:53 UTC --- The reason why aliasing believes reg 356 is varying is that sched1 doesn't use cselib. sched2 should be to figure out. Why it generates ld8.a is unclear to me, but at least that is not a wrong-code issue. ^ permalink raw reply [flat|nested] 12+ messages in thread
* [Bug rtl-optimization/47866] [4.5/4.6 Regression] gcc.dg/torture/vector-2.c fails on IA64 2011-02-23 23:29 [Bug rtl-optimization/47866] New: gcc.dg/torture/vector-2.c fails on IA64 sje at cup dot hp.com ` (3 preceding siblings ...) 2011-03-08 17:41 ` jakub at gcc dot gnu.org @ 2011-03-08 18:41 ` jakub at gcc dot gnu.org 2011-03-08 23:29 ` mark at gcc dot gnu.org ` (5 subsequent siblings) 10 siblings, 0 replies; 12+ messages in thread From: jakub at gcc dot gnu.org @ 2011-03-08 18:41 UTC (permalink / raw) To: gcc-bugs http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47866 Jakub Jelinek <jakub at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |law at gcc dot gnu.org, | |mark at gcc dot gnu.org --- Comment #4 from Jakub Jelinek <jakub at gcc dot gnu.org> 2011-03-08 18:41:04 UTC --- Seems that MEM_SET_IN_STRUCT_P use in there has been introduced by Mark in http://gcc.gnu.org/ml/gcc-patches/1999-01/msg00234.html Any idea why you think it should be unconditional in that case? BIT_FIELD_REF on a scalar doesn't make it a struct IMHO. Though, perhaps if (!MEM_SCALAR_P (to_rtx)) MEM_SET_IN_STRUCT_P (to_rtx, 1); is better written as if (!MEM_SCALAR_P (to_rtx)) MEM_IN_STRUCT_P (to_rtx) = 1; CCing Mark who wrote that patch and Jeff who reviewed it. ^ permalink raw reply [flat|nested] 12+ messages in thread
* [Bug rtl-optimization/47866] [4.5/4.6 Regression] gcc.dg/torture/vector-2.c fails on IA64 2011-02-23 23:29 [Bug rtl-optimization/47866] New: gcc.dg/torture/vector-2.c fails on IA64 sje at cup dot hp.com ` (4 preceding siblings ...) 2011-03-08 18:41 ` jakub at gcc dot gnu.org @ 2011-03-08 23:29 ` mark at gcc dot gnu.org 2011-03-09 17:27 ` sje at cup dot hp.com ` (4 subsequent siblings) 10 siblings, 0 replies; 12+ messages in thread From: mark at gcc dot gnu.org @ 2011-03-08 23:29 UTC (permalink / raw) To: gcc-bugs http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47866 Mark Wielaard <mark at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC|mark at gcc dot gnu.org |mark at codesourcery dot | |com --- Comment #5 from Mark Wielaard <mark at gcc dot gnu.org> 2011-03-08 23:29:42 UTC --- (In reply to comment #4) > Seems that MEM_SET_IN_STRUCT_P use in there has been introduced by Mark in > http://gcc.gnu.org/ml/gcc-patches/1999-01/msg00234.html Different mark. Changed CC. ^ permalink raw reply [flat|nested] 12+ messages in thread
* [Bug rtl-optimization/47866] [4.5/4.6 Regression] gcc.dg/torture/vector-2.c fails on IA64 2011-02-23 23:29 [Bug rtl-optimization/47866] New: gcc.dg/torture/vector-2.c fails on IA64 sje at cup dot hp.com ` (5 preceding siblings ...) 2011-03-08 23:29 ` mark at gcc dot gnu.org @ 2011-03-09 17:27 ` sje at cup dot hp.com 2011-03-09 20:49 ` jakub at gcc dot gnu.org ` (3 subsequent siblings) 10 siblings, 0 replies; 12+ messages in thread From: sje at cup dot hp.com @ 2011-03-09 17:27 UTC (permalink / raw) To: gcc-bugs http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47866 --- Comment #6 from Steve Ellcey <sje at cup dot hp.com> 2011-03-09 17:26:44 UTC --- I tried the patch in comment #2 and verified that it fixes vector-2.c on IA64 HP-UX and Linux and caused no regressions. ^ permalink raw reply [flat|nested] 12+ messages in thread
* [Bug rtl-optimization/47866] [4.5/4.6 Regression] gcc.dg/torture/vector-2.c fails on IA64 2011-02-23 23:29 [Bug rtl-optimization/47866] New: gcc.dg/torture/vector-2.c fails on IA64 sje at cup dot hp.com ` (6 preceding siblings ...) 2011-03-09 17:27 ` sje at cup dot hp.com @ 2011-03-09 20:49 ` jakub at gcc dot gnu.org 2011-03-09 20:52 ` [Bug rtl-optimization/47866] [4.5 " jakub at gcc dot gnu.org ` (2 subsequent siblings) 10 siblings, 0 replies; 12+ messages in thread From: jakub at gcc dot gnu.org @ 2011-03-09 20:49 UTC (permalink / raw) To: gcc-bugs http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47866 --- Comment #7 from Jakub Jelinek <jakub at gcc dot gnu.org> 2011-03-09 20:49:03 UTC --- Author: jakub Date: Wed Mar 9 20:49:00 2011 New Revision: 170834 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=170834 Log: PR rtl-optimization/47866 * expr.c (store_field): If MEM_SCALAR_P (target), don't use MEM_SET_IN_STRUCT_P (to_rtx, 1), just set MEM_IN_STRUCT_P (to_rtx) if target wasn't scalar. * function.c (assign_stack_temp_for_type): Assert that neither MEM_SCALAR_P nor MEM_IN_STRUCT_P is set previously, set either MEM_IN_STRUCT_P or MEM_SCALAR_P instead of using MEM_SET_IN_STRUCT_P macro. * rtl.h (MEM_SET_IN_STRUCT_P): Removed. Modified: trunk/gcc/ChangeLog trunk/gcc/expr.c trunk/gcc/function.c trunk/gcc/rtl.h ^ permalink raw reply [flat|nested] 12+ messages in thread
* [Bug rtl-optimization/47866] [4.5 Regression] gcc.dg/torture/vector-2.c fails on IA64 2011-02-23 23:29 [Bug rtl-optimization/47866] New: gcc.dg/torture/vector-2.c fails on IA64 sje at cup dot hp.com ` (7 preceding siblings ...) 2011-03-09 20:49 ` jakub at gcc dot gnu.org @ 2011-03-09 20:52 ` jakub at gcc dot gnu.org 2011-04-28 15:31 ` rguenth at gcc dot gnu.org 2012-07-02 10:30 ` rguenth at gcc dot gnu.org 10 siblings, 0 replies; 12+ messages in thread From: jakub at gcc dot gnu.org @ 2011-03-09 20:52 UTC (permalink / raw) To: gcc-bugs http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47866 Jakub Jelinek <jakub at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Summary|[4.5/4.6 Regression] |[4.5 Regression] |gcc.dg/torture/vector-2.c |gcc.dg/torture/vector-2.c |fails on IA64 |fails on IA64 --- Comment #8 from Jakub Jelinek <jakub at gcc dot gnu.org> 2011-03-09 20:51:45 UTC --- Should be fixed on the trunk, ia64-linux bootstrap/regtest just finished. ^ permalink raw reply [flat|nested] 12+ messages in thread
* [Bug rtl-optimization/47866] [4.5 Regression] gcc.dg/torture/vector-2.c fails on IA64 2011-02-23 23:29 [Bug rtl-optimization/47866] New: gcc.dg/torture/vector-2.c fails on IA64 sje at cup dot hp.com ` (8 preceding siblings ...) 2011-03-09 20:52 ` [Bug rtl-optimization/47866] [4.5 " jakub at gcc dot gnu.org @ 2011-04-28 15:31 ` rguenth at gcc dot gnu.org 2012-07-02 10:30 ` rguenth at gcc dot gnu.org 10 siblings, 0 replies; 12+ messages in thread From: rguenth at gcc dot gnu.org @ 2011-04-28 15:31 UTC (permalink / raw) To: gcc-bugs http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47866 Richard Guenther <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Target Milestone|4.5.3 |4.5.4 --- Comment #9 from Richard Guenther <rguenth at gcc dot gnu.org> 2011-04-28 14:51:41 UTC --- GCC 4.5.3 is being released, adjusting target milestone. ^ permalink raw reply [flat|nested] 12+ messages in thread
* [Bug rtl-optimization/47866] [4.5 Regression] gcc.dg/torture/vector-2.c fails on IA64 2011-02-23 23:29 [Bug rtl-optimization/47866] New: gcc.dg/torture/vector-2.c fails on IA64 sje at cup dot hp.com ` (9 preceding siblings ...) 2011-04-28 15:31 ` rguenth at gcc dot gnu.org @ 2012-07-02 10:30 ` rguenth at gcc dot gnu.org 10 siblings, 0 replies; 12+ messages in thread From: rguenth at gcc dot gnu.org @ 2012-07-02 10:30 UTC (permalink / raw) To: gcc-bugs http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47866 Richard Guenther <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED Resolution| |FIXED Target Milestone|4.5.4 |4.6.0 --- Comment #10 from Richard Guenther <rguenth at gcc dot gnu.org> 2012-07-02 10:29:38 UTC --- Fixed in 4.6.0, the 4.5 branch is being closed. ^ permalink raw reply [flat|nested] 12+ messages in thread
end of thread, other threads:[~2012-07-02 10:30 UTC | newest] Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2011-02-23 23:29 [Bug rtl-optimization/47866] New: gcc.dg/torture/vector-2.c fails on IA64 sje at cup dot hp.com 2011-03-06 19:07 ` [Bug rtl-optimization/47866] [4.5/4.6 Regression] " ubizjak at gmail dot com 2011-03-07 10:38 ` rguenth at gcc dot gnu.org 2011-03-08 17:05 ` jakub at gcc dot gnu.org 2011-03-08 17:41 ` jakub at gcc dot gnu.org 2011-03-08 18:41 ` jakub at gcc dot gnu.org 2011-03-08 23:29 ` mark at gcc dot gnu.org 2011-03-09 17:27 ` sje at cup dot hp.com 2011-03-09 20:49 ` jakub at gcc dot gnu.org 2011-03-09 20:52 ` [Bug rtl-optimization/47866] [4.5 " jakub at gcc dot gnu.org 2011-04-28 15:31 ` rguenth at gcc dot gnu.org 2012-07-02 10:30 ` rguenth at gcc dot gnu.org
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).