[Bug middle-end/45035] [4.6 Regression] FAIL: gcc.dg/guality/pr36728-2.c
--- Comment #4 from steven at gcc dot gnu dot org 2010-07-24 12:38 --- Subject: Bug 45035 Author: steven Date: Sat Jul 24 12:37:51 2010 New Revision: 162499 URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=162499 Log: PR middle-end/45035 * alias.c (true_dependence_1): Fix thinko in merge of old true_dependence and canon_true_dependence. Modified: trunk/gcc/ChangeLog trunk/gcc/alias.c -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45035
[Bug middle-end/45035] [4.6 Regression] FAIL: gcc.dg/guality/pr36728-2.c
--- Comment #5 from steven at gcc dot gnu dot org 2010-07-24 12:39 --- . -- steven at gcc dot gnu dot org changed: What|Removed |Added Status|ASSIGNED|RESOLVED Resolution||FIXED http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45035
[Bug middle-end/45035] [4.6 Regression] FAIL: gcc.dg/guality/pr36728-2.c
--- Comment #2 from jakub at gcc dot gnu dot org 2010-07-23 07:42 --- This isn't a mere debug info quality regression, a movl $2, (%esp) is now optimized away, eventhough it is needed by asm volatile following it. Here is a testcase that at -O1 -m32 now fails at runtime, while it worked well before: /* PR debug/36728 */ /* { dg-do run } */ /* { dg-options -O1 } */ int __attribute__((noinline)) foo (int arg1, int arg2, int arg3, int arg4, int arg5, int arg6, int arg7) { char x[30]; int __attribute__ ((aligned(32))) y; y = 2; asm volatile (cmpl $2, %0; je 1f; hlt; 1: : =m (y) : m (y)); x[0] = 25; asm volatile ( : =m (x[0]) : m (x[0])); return y; } int main () { int l = 0; asm volatile ( : =r (l) : 0 (l)); foo (l + 1, l + 2, l + 3, l + 4, l + 5, l + 6, l + 30); return 0; } The diff is: @@ -7,7 +7,6 @@ foo: movl%esp, %ebp andl$-32, %esp subl$64, %esp - movl$2, (%esp) #APP # 12 PP.c 1 cmpl $2, (%esp); je 1f; hlt; 1: -- jakub at gcc dot gnu dot org changed: What|Removed |Added Status|UNCONFIRMED |NEW Ever Confirmed|0 |1 Last reconfirmed|-00-00 00:00:00 |2010-07-23 07:42:27 date|| http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45035
[Bug middle-end/45035] [4.6 Regression] FAIL: gcc.dg/guality/pr36728-2.c
-- steven at gcc dot gnu dot org changed: What|Removed |Added AssignedTo|unassigned at gcc dot gnu |steven at gcc dot gnu dot |dot org |org Status|NEW |ASSIGNED Last reconfirmed|2010-07-23 07:42:27 |2010-07-23 08:20:29 date|| http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45035
[Bug middle-end/45035] [4.6 Regression] FAIL: gcc.dg/guality/pr36728-2.c
--- Comment #3 from steven at gcc dot gnu dot org 2010-07-23 08:58 --- Somehow managed to make a mistake in the merge for the case that x_addr is non-NULL. Index: alias.c === --- alias.c (revision 162430) +++ alias.c (working copy) @@ -2375,18 +2375,19 @@ true_dependence_1 (const_rtx mem, enum m } if (! x_addr) -x_addr = XEXP (x, 0); - - if (!((GET_CODE (x_addr) == VALUE - GET_CODE (mem_addr) != VALUE - reg_mentioned_p (x_addr, mem_addr)) - || (GET_CODE (x_addr) != VALUE -GET_CODE (mem_addr) == VALUE -reg_mentioned_p (mem_addr, x_addr { - x_addr = get_addr (x_addr); - if (!mem_canonicalized) - mem_addr = get_addr (mem_addr); + x_addr = XEXP (x, 0); + if (!((GET_CODE (x_addr) == VALUE + GET_CODE (mem_addr) != VALUE + reg_mentioned_p (x_addr, mem_addr)) + || (GET_CODE (x_addr) != VALUE +GET_CODE (mem_addr) == VALUE +reg_mentioned_p (mem_addr, x_addr + { + x_addr = get_addr (x_addr); + if (! mem_canonicalized) + mem_addr = get_addr (mem_addr); + } } base = find_base_term (x_addr); Will bootstrap+test, and commit if it passes. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45035
[Bug middle-end/45035] [4.6 Regression] FAIL: gcc.dg/guality/pr36728-2.c
--- Comment #1 from hjl dot tools at gmail dot com 2010-07-23 02:32 --- It is caused by revision 162430: http://gcc.gnu.org/ml/gcc-cvs/2010-07/msg00784.html -- hjl dot tools at gmail dot com changed: What|Removed |Added CC||steven at gcc dot gnu dot ||org Summary|[4.6 Regression] FAIL: |[4.6 Regression] FAIL: |gcc.dg/guality/pr36728-2.c |gcc.dg/guality/pr36728-2.c Target Milestone|--- |4.6.0 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45035