public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug rtl-optimization/43494] [4.4/4.5/4.6 Regression] Overlooked dependency causes wrong scheduling, wrong code
       [not found] <bug-43494-4@http.gcc.gnu.org/bugzilla/>
@ 2010-10-01 12:03 ` jakub at gcc dot gnu.org
  2011-01-13 10:51 ` aoliva at gcc dot gnu.org
                   ` (8 subsequent siblings)
  9 siblings, 0 replies; 25+ messages in thread
From: jakub at gcc dot gnu.org @ 2010-10-01 12:03 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43494

Jakub Jelinek <jakub at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
   Target Milestone|4.4.5                       |4.4.6


^ permalink raw reply	[flat|nested] 25+ messages in thread

* [Bug rtl-optimization/43494] [4.4/4.5/4.6 Regression] Overlooked dependency causes wrong scheduling, wrong code
       [not found] <bug-43494-4@http.gcc.gnu.org/bugzilla/>
  2010-10-01 12:03 ` [Bug rtl-optimization/43494] [4.4/4.5/4.6 Regression] Overlooked dependency causes wrong scheduling, wrong code jakub at gcc dot gnu.org
@ 2011-01-13 10:51 ` aoliva at gcc dot gnu.org
  2011-01-13 10:56 ` rguenther at suse dot de
                   ` (7 subsequent siblings)
  9 siblings, 0 replies; 25+ messages in thread
From: aoliva at gcc dot gnu.org @ 2011-01-13 10:51 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43494

--- Comment #28 from Alexandre Oliva <aoliva at gcc dot gnu.org> 2011-01-13 10:31:21 UTC ---
Created attachment 22957
  --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=22957
Updated patch, still awaiting review

The patch to fix this bug, posted on Sept 21, is still awaiting review :-(

This updated version fixes just a whitespace difference that caused it to fail
to apply.


^ permalink raw reply	[flat|nested] 25+ messages in thread

* [Bug rtl-optimization/43494] [4.4/4.5/4.6 Regression] Overlooked dependency causes wrong scheduling, wrong code
       [not found] <bug-43494-4@http.gcc.gnu.org/bugzilla/>
  2010-10-01 12:03 ` [Bug rtl-optimization/43494] [4.4/4.5/4.6 Regression] Overlooked dependency causes wrong scheduling, wrong code jakub at gcc dot gnu.org
  2011-01-13 10:51 ` aoliva at gcc dot gnu.org
@ 2011-01-13 10:56 ` rguenther at suse dot de
  2011-01-27 11:10 ` ebotcazou at gcc dot gnu.org
                   ` (6 subsequent siblings)
  9 siblings, 0 replies; 25+ messages in thread
From: rguenther at suse dot de @ 2011-01-13 10:56 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43494

--- Comment #29 from rguenther at suse dot de <rguenther at suse dot de> 2011-01-13 10:55:01 UTC ---
On Thu, 13 Jan 2011, aoliva at gcc dot gnu.org wrote:

> http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43494
> 
> --- Comment #28 from Alexandre Oliva <aoliva at gcc dot gnu.org> 2011-01-13 10:31:21 UTC ---
> Created attachment 22957
>   --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=22957
> Updated patch, still awaiting review
> 
> The patch to fix this bug, posted on Sept 21, is still awaiting review :-(
> 
> This updated version fixes just a whitespace difference that caused it to fail
> to apply.

I suppose pinging it on the ML is better than pinging it here.


^ permalink raw reply	[flat|nested] 25+ messages in thread

* [Bug rtl-optimization/43494] [4.4/4.5/4.6 Regression] Overlooked dependency causes wrong scheduling, wrong code
       [not found] <bug-43494-4@http.gcc.gnu.org/bugzilla/>
                   ` (2 preceding siblings ...)
  2011-01-13 10:56 ` rguenther at suse dot de
@ 2011-01-27 11:10 ` ebotcazou at gcc dot gnu.org
  2011-02-03  6:05 ` aoliva at gcc dot gnu.org
                   ` (5 subsequent siblings)
  9 siblings, 0 replies; 25+ messages in thread
From: ebotcazou at gcc dot gnu.org @ 2011-01-27 11:10 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43494

Eric Botcazou <ebotcazou at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |ebotcazou at gcc dot
                   |                            |gnu.org
      Known to fail|                            |

--- Comment #30 from Eric Botcazou <ebotcazou at gcc dot gnu.org> 2011-01-27 10:46:35 UTC ---
I'll review Alexandre's patch later today.


^ permalink raw reply	[flat|nested] 25+ messages in thread

* [Bug rtl-optimization/43494] [4.4/4.5/4.6 Regression] Overlooked dependency causes wrong scheduling, wrong code
       [not found] <bug-43494-4@http.gcc.gnu.org/bugzilla/>
                   ` (3 preceding siblings ...)
  2011-01-27 11:10 ` ebotcazou at gcc dot gnu.org
@ 2011-02-03  6:05 ` aoliva at gcc dot gnu.org
  2011-02-03  6:08 ` aoliva at gcc dot gnu.org
                   ` (4 subsequent siblings)
  9 siblings, 0 replies; 25+ messages in thread
From: aoliva at gcc dot gnu.org @ 2011-02-03  6:05 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43494

--- Comment #31 from Alexandre Oliva <aoliva at gcc dot gnu.org> 2011-02-03 06:04:07 UTC ---
Author: aoliva
Date: Thu Feb  3 06:04:04 2011
New Revision: 169782

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=169782
Log:
PR debug/43092
PR rtl-optimization/43494
* rtl.h (for_each_inc_dec_fn): New type.
(for_each_inc_dec): Declare.
* rtlanal.c (struct for_each_inc_dec_ops): New type.
(for_each_inc_dec_find_inc_dec): New fn.
(for_each_inc_dec_find_mem): New fn.
(for_each_inc_dec): New fn.
* dse.c (struct insn_size): Remove.
(replace_inc_dec, replace_inc_dec_mem): Remove.
(emit_inc_dec_insn_before): New fn.
(check_for_inc_dec): Use it, along with for_each_inc_dec.
(canon_address): Pass mem modes to cselib_lookup.
* cselib.h (cselib_lookup): Add memmode argument.  Adjust callers.
(cselib_lookup_from_insn): Likewise.
(cselib_subst_to_values): Likewise.
* cselib.c (find_slot_memmode): New var.
(cselib_find_slot): New fn.  Use it instead of
htab_find_slot_with_hash everywhere.
(entry_and_rtx_equal_p): Use find_slot_memmode.
(autoinc_split): New fn.
(rtx_equal_for_cselib_p): Rename and implement in terms of...
(rtx_equal_for_cselib_1): ... this.  Take memmode, pass it on.
Deal with autoinc.  Special-case recursion into MEMs.
(cselib_hash_rtx): Likewise.
(cselib_lookup_mem): Infer pmode from address mode.  Distinguish
address and MEM modes.
(cselib_subst_to_values): Add memmode, pass it on.
Deal with autoinc.
(cselib_lookup): Add memmode argument, pass it on.
(cselib_lookup_from_insn): Add memmode.
(cselib_invalidate_rtx): Discard obsolete push_operand handling.
(struct cselib_record_autoinc_data): New.
(cselib_record_autoinc_cb): New fn.
(cselib_record_sets): Use it, along with for_each_inc_dec.  Pass MEM
mode to cselib_lookup.  Reset autoinced REGs here instead of...
(cselib_process_insn): ... here.
* var-tracking.c (replace_expr_with_values, use_type): Pass MEM mode
to cselib_lookup.
(add_uses): Likewise, also to cselib_subst_to_values.
(add_stores): Likewise.
* sched-deps.c     (add_insn_mem_dependence): Pass mode to
cselib_subst_to_values.
(sched_analyze_1, sched_analyze_2): Likewise.  Adjusted.
* gcse.c (do_local_cprop): Adjusted.
* postreload.c (reload_cse_simplify_set): Adjusted.
(reload_cse_simplify_operands): Adjusted.
* sel-sched-dump (debug_mem_addr_value): Pass mode.

Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/cselib.c
    trunk/gcc/cselib.h
    trunk/gcc/dse.c
    trunk/gcc/gcse.c
    trunk/gcc/postreload.c
    trunk/gcc/rtl.h
    trunk/gcc/rtlanal.c
    trunk/gcc/sched-deps.c
    trunk/gcc/sel-sched-dump.c
    trunk/gcc/var-tracking.c


^ permalink raw reply	[flat|nested] 25+ messages in thread

* [Bug rtl-optimization/43494] [4.4/4.5/4.6 Regression] Overlooked dependency causes wrong scheduling, wrong code
       [not found] <bug-43494-4@http.gcc.gnu.org/bugzilla/>
                   ` (4 preceding siblings ...)
  2011-02-03  6:05 ` aoliva at gcc dot gnu.org
@ 2011-02-03  6:08 ` aoliva at gcc dot gnu.org
  2011-02-09 22:52 ` sje at cup dot hp.com
                   ` (3 subsequent siblings)
  9 siblings, 0 replies; 25+ messages in thread
From: aoliva at gcc dot gnu.org @ 2011-02-03  6:08 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43494

Alexandre Oliva <aoliva at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
         Resolution|                            |FIXED
         AssignedTo|unassigned at gcc dot       |aoliva at gcc dot gnu.org
                   |gnu.org                     |

--- Comment #32 from Alexandre Oliva <aoliva at gcc dot gnu.org> 2011-02-03 06:07:58 UTC ---
Fixed


^ permalink raw reply	[flat|nested] 25+ messages in thread

* [Bug rtl-optimization/43494] [4.4/4.5/4.6 Regression] Overlooked dependency causes wrong scheduling, wrong code
       [not found] <bug-43494-4@http.gcc.gnu.org/bugzilla/>
                   ` (5 preceding siblings ...)
  2011-02-03  6:08 ` aoliva at gcc dot gnu.org
@ 2011-02-09 22:52 ` sje at cup dot hp.com
  2011-02-09 22:59 ` jakub at gcc dot gnu.org
                   ` (2 subsequent siblings)
  9 siblings, 0 replies; 25+ messages in thread
From: sje at cup dot hp.com @ 2011-02-09 22:52 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43494

Steve Ellcey <sje at cup dot hp.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|RESOLVED                    |REOPENED
                 CC|                            |sje at cup dot hp.com
         Resolution|FIXED                       |

--- Comment #33 from Steve Ellcey <sje at cup dot hp.com> 2011-02-09 22:44:20 UTC ---
I am reopening this bug because I am getting a failure of
gcc.dg/torture/vector-2.c that started when this patch was checked in.  I think
this is
the same test that used to be gcc.c-torture/execute/vector-2.c.

I have a cut down test case that fails (prints 'one') when compiled with -O1
-fno-guess-branch-probability starting at r169782.  The
-fno-guess-branch-probability is needed to generate code that uses auto-inc and
trigger the bug.
This fails on IA64 Linux and HP-UX.  It does not require the -fpic flag.

Let me know if I should open a new bug instead of re-opening this one.

extern int printf(const char *, ...);
extern void exit(int);
struct __attribute__((packed)) B { unsigned short j : 1, k : 11; };
struct B sB;

void testB (void) {
        int i;
        unsigned int mask, v, a, r;
        struct B x;
        sB.k = 750;
        r = 750;
        x.j = sB.j = 0;
        printf("%d %d\n", (int) x.j, (int) sB.j);
        printf("%d %d\n", (int) sB.k, (int) r);
        if (x.j != sB.j || sB.k != r) printf ("one\n");
}
int
main (void)
{
  testB ();
  exit (0);
}


^ permalink raw reply	[flat|nested] 25+ messages in thread

* [Bug rtl-optimization/43494] [4.4/4.5/4.6 Regression] Overlooked dependency causes wrong scheduling, wrong code
       [not found] <bug-43494-4@http.gcc.gnu.org/bugzilla/>
                   ` (6 preceding siblings ...)
  2011-02-09 22:52 ` sje at cup dot hp.com
@ 2011-02-09 22:59 ` jakub at gcc dot gnu.org
  2011-02-09 23:44 ` sje at cup dot hp.com
  2011-02-10  7:03 ` ebotcazou at gcc dot gnu.org
  9 siblings, 0 replies; 25+ messages in thread
From: jakub at gcc dot gnu.org @ 2011-02-09 22:59 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43494

Jakub Jelinek <jakub at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |jakub at gcc dot gnu.org

--- Comment #34 from Jakub Jelinek <jakub at gcc dot gnu.org> 2011-02-09 22:51:37 UTC ---
Maybe you're hitting PR47614?


^ permalink raw reply	[flat|nested] 25+ messages in thread

* [Bug rtl-optimization/43494] [4.4/4.5/4.6 Regression] Overlooked dependency causes wrong scheduling, wrong code
       [not found] <bug-43494-4@http.gcc.gnu.org/bugzilla/>
                   ` (7 preceding siblings ...)
  2011-02-09 22:59 ` jakub at gcc dot gnu.org
@ 2011-02-09 23:44 ` sje at cup dot hp.com
  2011-02-10  7:03 ` ebotcazou at gcc dot gnu.org
  9 siblings, 0 replies; 25+ messages in thread
From: sje at cup dot hp.com @ 2011-02-09 23:44 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43494

--- Comment #35 from Steve Ellcey <sje at cup dot hp.com> 2011-02-09 23:42:57 UTC ---
I think it is PR47614, I tried the first patch in that defect report and it
fixed my test case.


^ permalink raw reply	[flat|nested] 25+ messages in thread

* [Bug rtl-optimization/43494] [4.4/4.5/4.6 Regression] Overlooked dependency causes wrong scheduling, wrong code
       [not found] <bug-43494-4@http.gcc.gnu.org/bugzilla/>
                   ` (8 preceding siblings ...)
  2011-02-09 23:44 ` sje at cup dot hp.com
@ 2011-02-10  7:03 ` ebotcazou at gcc dot gnu.org
  9 siblings, 0 replies; 25+ messages in thread
From: ebotcazou at gcc dot gnu.org @ 2011-02-10  7:03 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43494

Eric Botcazou <ebotcazou at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|REOPENED                    |RESOLVED
         Resolution|                            |FIXED

--- Comment #36 from Eric Botcazou <ebotcazou at gcc dot gnu.org> 2011-02-10 06:25:05 UTC ---
.


^ permalink raw reply	[flat|nested] 25+ messages in thread

* [Bug rtl-optimization/43494] [4.4/4.5/4.6 Regression] Overlooked dependency causes wrong scheduling, wrong code
  2010-03-23 17:34 [Bug c/43494] New: gcc.c-torture/execute/vector-2.c fails with -fpic/-fPIC ghazi at gcc dot gnu dot org
                   ` (13 preceding siblings ...)
  2010-08-19 13:39 ` bernds at gcc dot gnu dot org
@ 2010-09-10 23:16 ` aoliva at gcc dot gnu dot org
  14 siblings, 0 replies; 25+ messages in thread
From: aoliva at gcc dot gnu dot org @ 2010-09-10 23:16 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #27 from aoliva at gcc dot gnu dot org  2010-09-10 23:16 -------
> Shouldn't we do something else when hashing PRE_MODIFY?

I don't know, what else do you have in mind?

I'm posting an updated patch that implements your other suggestions
momentarily.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43494


^ permalink raw reply	[flat|nested] 25+ messages in thread

* [Bug rtl-optimization/43494] [4.4/4.5/4.6 Regression] Overlooked dependency causes wrong scheduling, wrong code
  2010-03-23 17:34 [Bug c/43494] New: gcc.c-torture/execute/vector-2.c fails with -fpic/-fPIC ghazi at gcc dot gnu dot org
                   ` (12 preceding siblings ...)
  2010-08-18 19:00 ` jakub at gcc dot gnu dot org
@ 2010-08-19 13:39 ` bernds at gcc dot gnu dot org
  2010-09-10 23:16 ` aoliva at gcc dot gnu dot org
  14 siblings, 0 replies; 25+ messages in thread
From: bernds at gcc dot gnu dot org @ 2010-08-19 13:39 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #26 from bernds at gcc dot gnu dot org  2010-08-19 13:38 -------
(In reply to comment #25)
> Alex Oliva posted some patches to make cselib handle autoinc stuff.
> No idea whether http://gcc.gnu.org/ml/gcc-patches/2010-03/msg01038.html
> is the latest version or if he has a newer one.

Doesn't look bad, but I dislike the name change to _addr variants for functions
that look up not just addresses.  I think we should just fix up all the callers
to pass in a mode.  I'm also not sure we need a global cselib_record_autoinc
flag - why not just do that always?

Shouldn't we do something else when hashing PRE_MODIFY?


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43494


^ permalink raw reply	[flat|nested] 25+ messages in thread

* [Bug rtl-optimization/43494] [4.4/4.5/4.6 Regression] Overlooked dependency causes wrong scheduling, wrong code
  2010-03-23 17:34 [Bug c/43494] New: gcc.c-torture/execute/vector-2.c fails with -fpic/-fPIC ghazi at gcc dot gnu dot org
                   ` (11 preceding siblings ...)
  2010-08-18 14:36 ` bernds at gcc dot gnu dot org
@ 2010-08-18 19:00 ` jakub at gcc dot gnu dot org
  2010-08-19 13:39 ` bernds at gcc dot gnu dot org
  2010-09-10 23:16 ` aoliva at gcc dot gnu dot org
  14 siblings, 0 replies; 25+ messages in thread
From: jakub at gcc dot gnu dot org @ 2010-08-18 19:00 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #25 from jakub at gcc dot gnu dot org  2010-08-18 19:00 -------
Alex Oliva posted some patches to make cselib handle autoinc stuff.
No idea whether http://gcc.gnu.org/ml/gcc-patches/2010-03/msg01038.html
is the latest version or if he has a newer one.


-- 

jakub at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |aoliva at gcc dot gnu dot
                   |                            |org


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43494


^ permalink raw reply	[flat|nested] 25+ messages in thread

* [Bug rtl-optimization/43494] [4.4/4.5/4.6 Regression] Overlooked dependency causes wrong scheduling, wrong code
  2010-03-23 17:34 [Bug c/43494] New: gcc.c-torture/execute/vector-2.c fails with -fpic/-fPIC ghazi at gcc dot gnu dot org
                   ` (10 preceding siblings ...)
  2010-08-18 10:50 ` steven at gcc dot gnu dot org
@ 2010-08-18 14:36 ` bernds at gcc dot gnu dot org
  2010-08-18 19:00 ` jakub at gcc dot gnu dot org
                   ` (2 subsequent siblings)
  14 siblings, 0 replies; 25+ messages in thread
From: bernds at gcc dot gnu dot org @ 2010-08-18 14:36 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #24 from bernds at gcc dot gnu dot org  2010-08-18 14:36 -------
It should be possible to do better in cselib_subst_to_values - for POST_* we
could look up the value of the inner expression, and for PRE_* we could
probably construct a PLUS of some kind.  That would be an enhancement, but it's
unrelated to the bug.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43494


^ permalink raw reply	[flat|nested] 25+ messages in thread

* [Bug rtl-optimization/43494] [4.4/4.5/4.6 Regression] Overlooked dependency causes wrong scheduling, wrong code
  2010-03-23 17:34 [Bug c/43494] New: gcc.c-torture/execute/vector-2.c fails with -fpic/-fPIC ghazi at gcc dot gnu dot org
                   ` (9 preceding siblings ...)
  2010-08-17 13:14 ` bernds at gcc dot gnu dot org
@ 2010-08-18 10:50 ` steven at gcc dot gnu dot org
  2010-08-18 14:36 ` bernds at gcc dot gnu dot org
                   ` (3 subsequent siblings)
  14 siblings, 0 replies; 25+ messages in thread
From: steven at gcc dot gnu dot org @ 2010-08-18 10:50 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #23 from steven at gcc dot gnu dot org  2010-08-18 10:50 -------
So the scheduler uses cselib to get a better view of the address, but cselib
doesn't actually give a better address. And the solution is to just give up in
that case? It seems to me that if cselib doesn't give a better address than
XEXP(MEM,0) then the original address should be used.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43494


^ permalink raw reply	[flat|nested] 25+ messages in thread

* [Bug rtl-optimization/43494] [4.4/4.5/4.6 Regression] Overlooked dependency causes wrong scheduling, wrong code
  2010-03-23 17:34 [Bug c/43494] New: gcc.c-torture/execute/vector-2.c fails with -fpic/-fPIC ghazi at gcc dot gnu dot org
                   ` (8 preceding siblings ...)
  2010-07-22  8:47 ` rguenth at gcc dot gnu dot org
@ 2010-08-17 13:14 ` bernds at gcc dot gnu dot org
  2010-08-18 10:50 ` steven at gcc dot gnu dot org
                   ` (4 subsequent siblings)
  14 siblings, 0 replies; 25+ messages in thread
From: bernds at gcc dot gnu dot org @ 2010-08-17 13:14 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #22 from bernds at gcc dot gnu dot org  2010-08-17 13:14 -------
(In reply to comment #19)
> x_addr is a VALUE that has no locs:

That happens because it's an autoincrement, and cselib_subst_to_values just
creates an empty value.

It seems to me that we simply need to add a VALUE case to rtx_varies_p.  Can
you test that?


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43494


^ permalink raw reply	[flat|nested] 25+ messages in thread

* [Bug rtl-optimization/43494] [4.4/4.5/4.6 Regression] Overlooked dependency causes wrong scheduling, wrong code
  2010-03-23 17:34 [Bug c/43494] New: gcc.c-torture/execute/vector-2.c fails with -fpic/-fPIC ghazi at gcc dot gnu dot org
                   ` (7 preceding siblings ...)
  2010-07-21 10:07 ` amonakov at gcc dot gnu dot org
@ 2010-07-22  8:47 ` rguenth at gcc dot gnu dot org
  2010-08-17 13:14 ` bernds at gcc dot gnu dot org
                   ` (5 subsequent siblings)
  14 siblings, 0 replies; 25+ messages in thread
From: rguenth at gcc dot gnu dot org @ 2010-07-22  8:47 UTC (permalink / raw)
  To: gcc-bugs



-- 

rguenth at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Priority|P3                          |P2


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43494


^ permalink raw reply	[flat|nested] 25+ messages in thread

* [Bug rtl-optimization/43494] [4.4/4.5/4.6 Regression] Overlooked dependency causes wrong scheduling, wrong code
  2010-03-23 17:34 [Bug c/43494] New: gcc.c-torture/execute/vector-2.c fails with -fpic/-fPIC ghazi at gcc dot gnu dot org
                   ` (6 preceding siblings ...)
  2010-07-21  9:49 ` steven at gcc dot gnu dot org
@ 2010-07-21 10:07 ` amonakov at gcc dot gnu dot org
  2010-07-22  8:47 ` rguenth at gcc dot gnu dot org
                   ` (6 subsequent siblings)
  14 siblings, 0 replies; 25+ messages in thread
From: amonakov at gcc dot gnu dot org @ 2010-07-21 10:07 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #21 from amonakov at gcc dot gnu dot org  2010-07-21 10:07 -------
(In reply to comment #20)
> (Even sel-sched apparently does not use cselib, that's surprising!)

Offtopic: yes, using cselib in sel-sched is not quite straightforward, since we
need it to work on arbitrary regions (as I understand cselib is designed to
work on EBBs).


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43494


^ permalink raw reply	[flat|nested] 25+ messages in thread

* [Bug rtl-optimization/43494] [4.4/4.5/4.6 Regression] Overlooked dependency causes wrong scheduling, wrong code
  2010-03-23 17:34 [Bug c/43494] New: gcc.c-torture/execute/vector-2.c fails with -fpic/-fPIC ghazi at gcc dot gnu dot org
                   ` (5 preceding siblings ...)
  2010-07-21  9:33 ` steven at gcc dot gnu dot org
@ 2010-07-21  9:49 ` steven at gcc dot gnu dot org
  2010-07-21 10:07 ` amonakov at gcc dot gnu dot org
                   ` (7 subsequent siblings)
  14 siblings, 0 replies; 25+ messages in thread
From: steven at gcc dot gnu dot org @ 2010-07-21  9:49 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #20 from steven at gcc dot gnu dot org  2010-07-21 09:49 -------
Since this bug only triggers if cselib is used, the bug affects schedule_ebbs
only. The other schedulers are !use_cselib schedulers.

(Even sel-sched apparently does not use cselib, that's surprising!)

OTOH, this bug can probably be triggered with -fsched2-use-superblocks on any
target.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43494


^ permalink raw reply	[flat|nested] 25+ messages in thread

* [Bug rtl-optimization/43494] [4.4/4.5/4.6 Regression] Overlooked dependency causes wrong scheduling, wrong code
  2010-03-23 17:34 [Bug c/43494] New: gcc.c-torture/execute/vector-2.c fails with -fpic/-fPIC ghazi at gcc dot gnu dot org
                   ` (4 preceding siblings ...)
  2010-07-21  9:28 ` steven at gcc dot gnu dot org
@ 2010-07-21  9:33 ` steven at gcc dot gnu dot org
  2010-07-21  9:49 ` steven at gcc dot gnu dot org
                   ` (8 subsequent siblings)
  14 siblings, 0 replies; 25+ messages in thread
From: steven at gcc dot gnu dot org @ 2010-07-21  9:33 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #19 from steven at gcc dot gnu dot org  2010-07-21 09:33 -------
x_addr is a VALUE that has no locs:

Breakpoint 4, true_dependence (mem=0x20000000005ddf68, mem_mode=VOIDmode,
x=0x20000000005ddfb0, varies=0x2000000000496720) at
../../trunk/gcc/alias.c:2330
2330      if (MEM_VOLATILE_P (x) && MEM_VOLATILE_P (mem))
(gdb) cont
Continuing.

Breakpoint 11, get_addr (x=0x6000000000316e28) at ../../trunk/gcc/alias.c:1726
1726      if (GET_CODE (x) != VALUE)
(gdb) up
#1  0x400000000036eb50 in true_dependence (mem=0x20000000005ddf68,
mem_mode=SImode, x=0x20000000005ddfb0, varies=0x2000000000496720) at
../../trunk/gcc/alias.c:2367
2367          x_addr = get_addr (x_addr);
(gdb) down
#0  get_addr (x=0x6000000000316e28) at ../../trunk/gcc/alias.c:1726
1726      if (GET_CODE (x) != VALUE)
(gdb) next
1728      v = CSELIB_VAL_PTR (x);
(gdb)
1729      if (v)
(gdb)
1731          for (l = v->locs; l; l = l->next)
(gdb) p v->locs
$72 = (struct elt_loc_list *) 0x0
(gdb) p debug_rtx(x)
(value:DI 10:10 @0x6000000000316e28/0x6000000000316d10)
$73 = void
(gdb)

So get_addr just returns the VALUE.

Is it *ever* OK for get_addr to return a VALUE rtx?  It seems to me this should
never happen, and we should assert that.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43494


^ permalink raw reply	[flat|nested] 25+ messages in thread

* [Bug rtl-optimization/43494] [4.4/4.5/4.6 Regression] Overlooked dependency causes wrong scheduling, wrong code
  2010-03-23 17:34 [Bug c/43494] New: gcc.c-torture/execute/vector-2.c fails with -fpic/-fPIC ghazi at gcc dot gnu dot org
                   ` (3 preceding siblings ...)
  2010-07-21  8:32 ` amonakov at gcc dot gnu dot org
@ 2010-07-21  9:28 ` steven at gcc dot gnu dot org
  2010-07-21  9:33 ` steven at gcc dot gnu dot org
                   ` (9 subsequent siblings)
  14 siblings, 0 replies; 25+ messages in thread
From: steven at gcc dot gnu dot org @ 2010-07-21  9:28 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #18 from steven at gcc dot gnu dot org  2010-07-21 09:27 -------
Created an attachment (id=21277)
 --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=21277&action=view)
debug log

I think the problem is that fixed_scalar_and_varying_struct_p is called with a
VALUE address, i.e. not expanded. See attached debug log.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43494


^ permalink raw reply	[flat|nested] 25+ messages in thread

* [Bug rtl-optimization/43494] [4.4/4.5/4.6 Regression] Overlooked dependency causes wrong scheduling, wrong code
  2010-03-23 17:34 [Bug c/43494] New: gcc.c-torture/execute/vector-2.c fails with -fpic/-fPIC ghazi at gcc dot gnu dot org
                   ` (2 preceding siblings ...)
  2010-07-21  8:22 ` steven at gcc dot gnu dot org
@ 2010-07-21  8:32 ` amonakov at gcc dot gnu dot org
  2010-07-21  9:28 ` steven at gcc dot gnu dot org
                   ` (10 subsequent siblings)
  14 siblings, 0 replies; 25+ messages in thread
From: amonakov at gcc dot gnu dot org @ 2010-07-21  8:32 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #17 from amonakov at gcc dot gnu dot org  2010-07-21 08:32 -------
(In reply to comment #16)
> OK, I think I finally understand what Alexander tried to explain, and I've
> annotated the code. Alexander, does this look right to you?

Yes, thanks.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43494


^ permalink raw reply	[flat|nested] 25+ messages in thread

* [Bug rtl-optimization/43494] [4.4/4.5/4.6 Regression] Overlooked dependency causes wrong scheduling, wrong code
  2010-03-23 17:34 [Bug c/43494] New: gcc.c-torture/execute/vector-2.c fails with -fpic/-fPIC ghazi at gcc dot gnu dot org
  2010-07-20 18:08 ` [Bug rtl-optimization/43494] [4.4/4.5/4.6 Regression] Overlooked dependency causes wrong scheduling, wrong code steven at gcc dot gnu dot org
  2010-07-21  8:10 ` rguenth at gcc dot gnu dot org
@ 2010-07-21  8:22 ` steven at gcc dot gnu dot org
  2010-07-21  8:32 ` amonakov at gcc dot gnu dot org
                   ` (11 subsequent siblings)
  14 siblings, 0 replies; 25+ messages in thread
From: steven at gcc dot gnu dot org @ 2010-07-21  8:22 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #16 from steven at gcc dot gnu dot org  2010-07-21 08:22 -------
OK, I think I finally understand what Alexander tried to explain, and I've
annotated the code. Alexander, does this look right to you?

f1:                             // vector int f1(vector int t)
        .mmi
        mov r15 = r12           // 30: r12 = @temp1
        mov r14 = r12           // 29: r14 = @temp1
        addl r16 = 1, r0        // 34: r16 = 1
        ;;
        .mmi
        st8 [r15] = r32, 8      // 36: temp1[0:1] = t[0:1], r15=@temp[2]
        ;;
        st8 [r15] = r33, -4     // 37: temp1[2:3] = t[2:3], r15=@temp[1]
        nop 0
        .mii
        ld8 r8 = [r14], 8       // 21: r8 = temp[0:1]
        nop 0
        ;;
        nop 0
        .mmb
        ld8 r9 = [r14]          // 28: r9 = temp[2:3]
        st4 [r15] = r16         //  9: temp[1] = 1
        br.ret.sptk.many b0     // 40: return r8:r9
        .endp f1#


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43494


^ permalink raw reply	[flat|nested] 25+ messages in thread

* [Bug rtl-optimization/43494] [4.4/4.5/4.6 Regression] Overlooked dependency causes wrong scheduling, wrong code
  2010-03-23 17:34 [Bug c/43494] New: gcc.c-torture/execute/vector-2.c fails with -fpic/-fPIC ghazi at gcc dot gnu dot org
  2010-07-20 18:08 ` [Bug rtl-optimization/43494] [4.4/4.5/4.6 Regression] Overlooked dependency causes wrong scheduling, wrong code steven at gcc dot gnu dot org
@ 2010-07-21  8:10 ` rguenth at gcc dot gnu dot org
  2010-07-21  8:22 ` steven at gcc dot gnu dot org
                   ` (12 subsequent siblings)
  14 siblings, 0 replies; 25+ messages in thread
From: rguenth at gcc dot gnu dot org @ 2010-07-21  8:10 UTC (permalink / raw)
  To: gcc-bugs



-- 

rguenth at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
   Target Milestone|---                         |4.4.5


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43494


^ permalink raw reply	[flat|nested] 25+ messages in thread

* [Bug rtl-optimization/43494] [4.4/4.5/4.6 Regression] Overlooked dependency causes wrong scheduling, wrong code
  2010-03-23 17:34 [Bug c/43494] New: gcc.c-torture/execute/vector-2.c fails with -fpic/-fPIC ghazi at gcc dot gnu dot org
@ 2010-07-20 18:08 ` steven at gcc dot gnu dot org
  2010-07-21  8:10 ` rguenth at gcc dot gnu dot org
                   ` (13 subsequent siblings)
  14 siblings, 0 replies; 25+ messages in thread
From: steven at gcc dot gnu dot org @ 2010-07-20 18:08 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #15 from steven at gcc dot gnu dot org  2010-07-20 18:08 -------
Works with "gcc-4.3 (Debian 4.3.5-1) 4.3.5", both with -fpic and with
-fno-inline.
That makes this bug a regression.  CC:RM - who happens to know a thing or two
about the alias analysis code also.


-- 

steven at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |rguenth at gcc dot gnu dot
                   |                            |org
      Known to work|                            |4.3.5
            Summary|Overlooked dependency causes|[4.4/4.5/4.6 Regression]
                   |wrong scheduling, wrong code|Overlooked dependency causes
                   |                            |wrong scheduling, wrong code


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43494


^ permalink raw reply	[flat|nested] 25+ messages in thread

end of thread, other threads:[~2011-02-10  6:25 UTC | newest]

Thread overview: 25+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <bug-43494-4@http.gcc.gnu.org/bugzilla/>
2010-10-01 12:03 ` [Bug rtl-optimization/43494] [4.4/4.5/4.6 Regression] Overlooked dependency causes wrong scheduling, wrong code jakub at gcc dot gnu.org
2011-01-13 10:51 ` aoliva at gcc dot gnu.org
2011-01-13 10:56 ` rguenther at suse dot de
2011-01-27 11:10 ` ebotcazou at gcc dot gnu.org
2011-02-03  6:05 ` aoliva at gcc dot gnu.org
2011-02-03  6:08 ` aoliva at gcc dot gnu.org
2011-02-09 22:52 ` sje at cup dot hp.com
2011-02-09 22:59 ` jakub at gcc dot gnu.org
2011-02-09 23:44 ` sje at cup dot hp.com
2011-02-10  7:03 ` ebotcazou at gcc dot gnu.org
2010-03-23 17:34 [Bug c/43494] New: gcc.c-torture/execute/vector-2.c fails with -fpic/-fPIC ghazi at gcc dot gnu dot org
2010-07-20 18:08 ` [Bug rtl-optimization/43494] [4.4/4.5/4.6 Regression] Overlooked dependency causes wrong scheduling, wrong code steven at gcc dot gnu dot org
2010-07-21  8:10 ` rguenth at gcc dot gnu dot org
2010-07-21  8:22 ` steven at gcc dot gnu dot org
2010-07-21  8:32 ` amonakov at gcc dot gnu dot org
2010-07-21  9:28 ` steven at gcc dot gnu dot org
2010-07-21  9:33 ` steven at gcc dot gnu dot org
2010-07-21  9:49 ` steven at gcc dot gnu dot org
2010-07-21 10:07 ` amonakov at gcc dot gnu dot org
2010-07-22  8:47 ` rguenth at gcc dot gnu dot org
2010-08-17 13:14 ` bernds at gcc dot gnu dot org
2010-08-18 10:50 ` steven at gcc dot gnu dot org
2010-08-18 14:36 ` bernds at gcc dot gnu dot org
2010-08-18 19:00 ` jakub at gcc dot gnu dot org
2010-08-19 13:39 ` bernds at gcc dot gnu dot org
2010-09-10 23:16 ` aoliva at gcc dot gnu dot 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).