public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug rtl-optimization/20070] If-conversion can't match equivalent code, and cross-jumping only works for literal matches
       [not found] <bug-20070-5394@http.gcc.gnu.org/bugzilla/>
@ 2005-12-01 20:17 ` steven at gcc dot gnu dot org
  2005-12-07 13:31 ` amylaar at gcc dot gnu dot org
                   ` (11 subsequent siblings)
  12 siblings, 0 replies; 29+ messages in thread
From: steven at gcc dot gnu dot org @ 2005-12-01 20:17 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #21 from steven at gcc dot gnu dot org  2005-12-01 20:17 -------
For Bug 21803 we could use similar infrastructure to what is proposed for this
bug.


-- 

steven at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
OtherBugsDependingO|                            |21803
              nThis|                            |


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


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

* [Bug rtl-optimization/20070] If-conversion can't match equivalent code, and cross-jumping only works for literal matches
       [not found] <bug-20070-5394@http.gcc.gnu.org/bugzilla/>
  2005-12-01 20:17 ` [Bug rtl-optimization/20070] If-conversion can't match equivalent code, and cross-jumping only works for literal matches steven at gcc dot gnu dot org
@ 2005-12-07 13:31 ` amylaar at gcc dot gnu dot org
  2005-12-13 13:04 ` amylaar at gcc dot gnu dot org
                   ` (10 subsequent siblings)
  12 siblings, 0 replies; 29+ messages in thread
From: amylaar at gcc dot gnu dot org @ 2005-12-07 13:31 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #22 from amylaar at gcc dot gnu dot org  2005-12-07 13:31 -------
Subject: Bug 20070

Author: amylaar
Date: Wed Dec  7 13:31:41 2005
New Revision: 108164

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=108164
Log:
2005-12-07  J"orn Rennecke <joern.rennecke@st.com>

        Preparation for PR rtl-optimization/20070 / part1
        * basic-block.h (insns_match_p, flow_find_cross_jump): Declare.
        * cfgcleanup.c (condjump_equiv_p): New function, broken out of
        outgoing_edges_match.
        (outgoing_edges_match): Use condjump_equiv_p.
        (merge_memattrs, insns_match_p, flow_find_cross_jump): Move from here
        into..
        * struct-equiv.c: New file.
        (death_notes_match_p) New function, broken out of insns_match_p.
        * Makefile.in (OBJS-common): Add struct-equiv.o.
        (struct-equiv.o): New target.

Added:
    trunk/gcc/struct-equiv.c
      - copied, changed from r107723, trunk/gcc/cfgcleanup.c
Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/Makefile.in
    trunk/gcc/basic-block.h
    trunk/gcc/cfgcleanup.c


-- 


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


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

* [Bug rtl-optimization/20070] If-conversion can't match equivalent code, and cross-jumping only works for literal matches
       [not found] <bug-20070-5394@http.gcc.gnu.org/bugzilla/>
  2005-12-01 20:17 ` [Bug rtl-optimization/20070] If-conversion can't match equivalent code, and cross-jumping only works for literal matches steven at gcc dot gnu dot org
  2005-12-07 13:31 ` amylaar at gcc dot gnu dot org
@ 2005-12-13 13:04 ` amylaar at gcc dot gnu dot org
  2005-12-19 14:37 ` amylaar at gcc dot gnu dot org
                   ` (9 subsequent siblings)
  12 siblings, 0 replies; 29+ messages in thread
From: amylaar at gcc dot gnu dot org @ 2005-12-13 13:04 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #23 from amylaar at gcc dot gnu dot org  2005-12-13 13:04 -------
Subject: Bug 20070

Author: amylaar
Date: Tue Dec 13 13:04:18 2005
New Revision: 108480

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=108480
Log:
        PR rtl-optimization/20070 / part1
        * flow.c (update_life_info): If PROP_POST_REGSTACK is set, call
        count_or_remove_death_notes with kill == -1.
        (mark_set_1): Don't add REG_DEAD / REG_UNUSED notes for stack
        registers if PROP_POST_REGSTACK is set.
        (mark_used_reg): Likewise.
        (count_or_remove_death_notes): If kill is -1, don't remove REG_DEAD /
        REG_UNUSED notes for stack regs.
        * cfgcleanup.c (condjump_equiv_p): Change parameters and processing
        to match rtx_equiv_p machinery.  Change caller.
        (outgoing_edges_match): Likewise.
        (try_crossjump_to_edge): Use struct_equiv_block_eq
        instead of flow_find_cross_jump.
        * basic-block.h (PROP_POST_REGSTACK, STRUCT_EQUIV_START): Define.
        (STRUCT_EQUIV_RERUN, STRUCT_EQUIV_FINAL): Likewise.
        (STRUCT_EQUIV_NEED_FULL_BLOCK, STRUCT_EQUIV_MATCH_JUMPS): Likewise.
        (STRUCT_EQUIV_MAX_LOCAL): Likewise.
        (struct struct_equiv_checkpoint, struct equiv_info): Likewise.
        (insns_match_p): Update prototype.
        (flow_find_cross_jump): Remove prototype.
        (struct_equiv_block_eq, struct_equiv_init): Declare.
        (rtx_equiv_p, condjump_equiv_p): Likewise.
        * struct-equiv.c: Include reload.h.
        (IMPOSSIBLE_MOVE_FACTOR): Define.
        (assign_reg_reg_set, struct_equiv_make_checkpoint): New functions.
        (struct_equiv_improve_checkpoint): Likewise.
        (struct_equiv_restore_checkpoint, rtx_equiv_p): Likewise.
        (set_dest_equiv_p, set_dest_addr_equiv_p, struct_equiv_init): Likewise.
        (struct_equiv_merge, find_dying_input): Likewise.
        (resolve_input_conflict, note_local_live): Likewise.
        (death_notes_match_p): Change parameters and processing
        to match rtx_equiv_p machinery.  Change caller.
        (insns_match_p): Likewise.
        (flow_find_cross_jump): Replace with:
        (struct_equiv_block_eq).

        Back out this change:
        2005-03-07  Kazu Hirata  <kazu@cs.umass.edu>
          * recog.c (verify_changes): Make it static.
          * recog.h: Remove the corresponding prototype.

Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/basic-block.h
    trunk/gcc/cfgcleanup.c
    trunk/gcc/flow.c
    trunk/gcc/recog.c
    trunk/gcc/recog.h
    trunk/gcc/struct-equiv.c


-- 


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


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

* [Bug rtl-optimization/20070] If-conversion can't match equivalent code, and cross-jumping only works for literal matches
       [not found] <bug-20070-5394@http.gcc.gnu.org/bugzilla/>
                   ` (2 preceding siblings ...)
  2005-12-13 13:04 ` amylaar at gcc dot gnu dot org
@ 2005-12-19 14:37 ` amylaar at gcc dot gnu dot org
  2006-03-21  8:27 ` bonzini at gnu dot org
                   ` (8 subsequent siblings)
  12 siblings, 0 replies; 29+ messages in thread
From: amylaar at gcc dot gnu dot org @ 2005-12-19 14:37 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #24 from amylaar at gcc dot gnu dot org  2005-12-19 14:37 -------
Subject: Bug 20070

Author: amylaar
Date: Mon Dec 19 14:36:59 2005
New Revision: 108792

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=108792
Log:
        * cfgcleanup.c: Temporarily revert patches for PR 20070 till Bernd
        comes back.

Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/cfgcleanup.c


-- 


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


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

* [Bug rtl-optimization/20070] If-conversion can't match equivalent code, and cross-jumping only works for literal matches
       [not found] <bug-20070-5394@http.gcc.gnu.org/bugzilla/>
                   ` (3 preceding siblings ...)
  2005-12-19 14:37 ` amylaar at gcc dot gnu dot org
@ 2006-03-21  8:27 ` bonzini at gnu dot org
  2006-03-21 14:24 ` amylaar at gcc dot gnu dot org
                   ` (7 subsequent siblings)
  12 siblings, 0 replies; 29+ messages in thread
From: bonzini at gnu dot org @ 2006-03-21  8:27 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #25 from bonzini at gnu dot org  2006-03-21 08:27 -------
can we close this?


-- 


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


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

* [Bug rtl-optimization/20070] If-conversion can't match equivalent code, and cross-jumping only works for literal matches
       [not found] <bug-20070-5394@http.gcc.gnu.org/bugzilla/>
                   ` (4 preceding siblings ...)
  2006-03-21  8:27 ` bonzini at gnu dot org
@ 2006-03-21 14:24 ` amylaar at gcc dot gnu dot org
  2006-11-17 18:58 ` amylaar at gcc dot gnu dot org
                   ` (6 subsequent siblings)
  12 siblings, 0 replies; 29+ messages in thread
From: amylaar at gcc dot gnu dot org @ 2006-03-21 14:24 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #26 from amylaar at gcc dot gnu dot org  2006-03-21 14:24 -------
(In reply to comment #25)
> can we close this?
> 
No, we still have to actually re-enable the cross-jumping code,
and we haven't even gotten to the review of the if-conversion part.


-- 


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


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

* [Bug rtl-optimization/20070] If-conversion can't match equivalent code, and cross-jumping only works for literal matches
       [not found] <bug-20070-5394@http.gcc.gnu.org/bugzilla/>
                   ` (5 preceding siblings ...)
  2006-03-21 14:24 ` amylaar at gcc dot gnu dot org
@ 2006-11-17 18:58 ` amylaar at gcc dot gnu dot org
  2009-06-14 19:54 ` steven at gcc dot gnu dot org
                   ` (5 subsequent siblings)
  12 siblings, 0 replies; 29+ messages in thread
From: amylaar at gcc dot gnu dot org @ 2006-11-17 18:58 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #27 from amylaar at gcc dot gnu dot org  2006-11-17 18:58 -------
We've been using this patch:
http://gcc.gnu.org/ml/gcc-patches/2006-02/msg01488.html
successfully in a 4.1.1 based compiler.

It is not optimal, though: the check for equality of the regsets in
struct_equiv_init is unnecessary, and it can also lead skipping possible
optimizations.  The frequent live updates are also not necessary.
This optimization can work with register life info that is inexact, as long
as it is conservative, i.e. it may flag registers as live that are not, but
it most not pretend that live registers are dead.

Note also that re-integration of the if-conversion improvements was not
within the scope of this patch, i.e. this is still an outstanding issue.


-- 


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


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

* [Bug rtl-optimization/20070] If-conversion can't match equivalent code, and cross-jumping only works for literal matches
       [not found] <bug-20070-5394@http.gcc.gnu.org/bugzilla/>
                   ` (6 preceding siblings ...)
  2006-11-17 18:58 ` amylaar at gcc dot gnu dot org
@ 2009-06-14 19:54 ` steven at gcc dot gnu dot org
  2009-09-04 14:51 ` rahul at icerasemi dot com
                   ` (4 subsequent siblings)
  12 siblings, 0 replies; 29+ messages in thread
From: steven at gcc dot gnu dot org @ 2009-06-14 19:54 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #28 from steven at gcc dot gnu dot org  2009-06-14 19:54 -------
Created an attachment (id=17995)
 --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=17995&action=view)
Patch agains r148322, works pre-RA only

Joern's original ifcvt.c patch only dealt with pre-reload if-conversion.  The
subsequent changes to make struct-equiv work for crossjumping and after reload,
made the code too complicated IMHO.

So I've gone back to the roots of the patch.  I've simplified things a bit --
mostly by using the DF machinery.  This new attached patch is far from complete
though.  The struct-equiv code should use rtx_equal_p_cb, but the
rtx_equal_p_cb needs to be modified first (to be more like for_each_rtx:
3-state and passing around a pointer to auxiliary data).  The local_reg_p stuff
should probably go into df-problems.c as a _p function.  And so on.

But the patch does work.  I wanted to let folks now that this bug is not yet
forgotten!


-- 

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


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


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

* [Bug rtl-optimization/20070] If-conversion can't match equivalent code, and cross-jumping only works for literal matches
       [not found] <bug-20070-5394@http.gcc.gnu.org/bugzilla/>
                   ` (7 preceding siblings ...)
  2009-06-14 19:54 ` steven at gcc dot gnu dot org
@ 2009-09-04 14:51 ` rahul at icerasemi dot com
  2010-01-08 17:08 ` steven at gcc dot gnu dot org
                   ` (3 subsequent siblings)
  12 siblings, 0 replies; 29+ messages in thread
From: rahul at icerasemi dot com @ 2009-09-04 14:51 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #29 from rahul at icerasemi dot com  2009-09-04 14:51 -------
I am testing Steven's Crossjumping patch attached here. With CoreMark we see a
1% increase in performance when using Os. Other proprietary tests show ~0.5%
decrease in code size.

The path however does not fix PR30905.


-- 


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


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

* [Bug rtl-optimization/20070] If-conversion can't match equivalent code, and cross-jumping only works for literal matches
       [not found] <bug-20070-5394@http.gcc.gnu.org/bugzilla/>
                   ` (8 preceding siblings ...)
  2009-09-04 14:51 ` rahul at icerasemi dot com
@ 2010-01-08 17:08 ` steven at gcc dot gnu dot org
  2010-01-09 21:27 ` steven at gcc dot gnu dot org
                   ` (2 subsequent siblings)
  12 siblings, 0 replies; 29+ messages in thread
From: steven at gcc dot gnu dot org @ 2010-01-08 17:08 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #30 from steven at gcc dot gnu dot org  2010-01-08 17:08 -------
(From update of attachment 17995)
The ifcvt.c part of the patch does not work anymore, because it doesn't handle
DEBUG_INSNs properly. I am working on an update.


-- 

steven at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
  Attachment #17995|0                           |1
        is obsolete|                            |


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


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

* [Bug rtl-optimization/20070] If-conversion can't match equivalent code, and cross-jumping only works for literal matches
       [not found] <bug-20070-5394@http.gcc.gnu.org/bugzilla/>
                   ` (9 preceding siblings ...)
  2010-01-08 17:08 ` steven at gcc dot gnu dot org
@ 2010-01-09 21:27 ` steven at gcc dot gnu dot org
  2010-01-11 12:34 ` rahul at icerasemi dot com
  2010-04-23  7:39 ` steven at gcc dot gnu dot org
  12 siblings, 0 replies; 29+ messages in thread
From: steven at gcc dot gnu dot org @ 2010-01-09 21:27 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #31 from steven at gcc dot gnu dot org  2010-01-09 21:27 -------
Created an attachment (id=19525)
 --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=19525&action=view)
Patch agains r155731, works pre-RA only 

Bootstrapped&tested on ia64-unknown-linux-gnu.


-- 


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


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

* [Bug rtl-optimization/20070] If-conversion can't match equivalent code, and cross-jumping only works for literal matches
       [not found] <bug-20070-5394@http.gcc.gnu.org/bugzilla/>
                   ` (10 preceding siblings ...)
  2010-01-09 21:27 ` steven at gcc dot gnu dot org
@ 2010-01-11 12:34 ` rahul at icerasemi dot com
  2010-04-23  7:39 ` steven at gcc dot gnu dot org
  12 siblings, 0 replies; 29+ messages in thread
From: rahul at icerasemi dot com @ 2010-01-11 12:34 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #32 from rahul at icerasemi dot com  2010-01-11 12:34 -------
I will re-test on our port and report my findings, cheers!


-- 


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


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

* [Bug rtl-optimization/20070] If-conversion can't match equivalent code, and cross-jumping only works for literal matches
       [not found] <bug-20070-5394@http.gcc.gnu.org/bugzilla/>
                   ` (11 preceding siblings ...)
  2010-01-11 12:34 ` rahul at icerasemi dot com
@ 2010-04-23  7:39 ` steven at gcc dot gnu dot org
  12 siblings, 0 replies; 29+ messages in thread
From: steven at gcc dot gnu dot org @ 2010-04-23  7:39 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #33 from steven at gcc dot gnu dot org  2010-04-23 07:38 -------
*** Bug 43864 has been marked as a duplicate of this bug. ***


-- 

steven at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |carrot at google dot com


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


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

* [Bug rtl-optimization/20070] If-conversion can't match equivalent code, and cross-jumping only works for literal matches
  2005-02-19 15:55 [Bug rtl-optimization/20070] New: " amylaar at gcc dot gnu dot org
                   ` (14 preceding siblings ...)
  2005-07-15 14:22 ` amylaar at gcc dot gnu dot org
@ 2005-07-15 14:43 ` cvs-commit at gcc dot gnu dot org
  15 siblings, 0 replies; 29+ messages in thread
From: cvs-commit at gcc dot gnu dot org @ 2005-07-15 14:43 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From cvs-commit at gcc dot gnu dot org  2005-07-15 14:25 -------
Subject: Bug 20070

CVSROOT:	/cvs/gcc
Module name:	gcc
Branch: 	sh-elf-4_1-branch
Changes by:	amylaar@gcc.gnu.org	2005-07-15 14:25:24

Modified files:
	gcc            : cfgcleanup.c ChangeLog 

Log message:
	Update this patch:
	2005-07-14  J"orn Rennecke <joern.rennecke@st.com>
	
	PR rtl-optimization/20070
	http://gcc.gnu.org/ml/gcc-patches/2005-07/msg01041.html
	* basic-block.h (STRUCT_EQUIV_START, STRUCT_EQUIV_RERUN): Define.
	(STRUCT_EQUIV_FINAL, STRUCT_EQUIV_MAX_LOCAL): Likewise.
	(struct struct_equiv_checkpoint, struct equiv_info): Likewise.
	(struct_equiv_block_eq): Declare.
	* cfgcleanup.c (reload.h, expr.h): #include.
	(IMPOSSIBLE_MOVE_FACTOR): Define.
	(flow_find_cross_jump): Remove.
	(assign_reg_reg_set, struct_equiv, struct_equiv_set): New functions.
	(struct_equiv_dst_mem, struct_equiv_make_checkpoint): Likewise.
	(struct_equiv_improve_checkpoint): Likewise.
	(struct_equiv_restore_checkpoint, struct_equiv_death): Likewise.
	(struct_equiv_block_eq): Likewise.
	(find_dying_inputs, resolve_input_conflict): Likewise.
	(try_crossjump_to_edge): Use struct_equiv_block_eq instead of
	flow_find_cross_jump.
	* ifcvt.c (noce_try_complex_cmove): New function.
	(noce_process_if_block): Call it.
	For flag_expensive_optimizations, update cond_exec_changed_p on
	success.
	(rest_of_handle_if_conversion): For flag_expensive_optimizations,
	provide if_convert with register lifeness info.
	
	Back out this change:
	2005-03-07  Kazu Hirata  <kazu@cs.umass.edu>
	* recog.c (verify_changes): Make it static.
	* recog.h: Remove the corresponding prototype.

Patches:
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/cfgcleanup.c.diff?cvsroot=gcc&only_with_tag=sh-elf-4_1-branch&r1=1.143.2.3&r2=1.143.2.4
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/ChangeLog.diff?cvsroot=gcc&only_with_tag=sh-elf-4_1-branch&r1=2.8142.2.22&r2=2.8142.2.23



-- 


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


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

* [Bug rtl-optimization/20070] If-conversion can't match equivalent code, and cross-jumping only works for literal matches
  2005-02-19 15:55 [Bug rtl-optimization/20070] New: " amylaar at gcc dot gnu dot org
                   ` (13 preceding siblings ...)
  2005-07-12 13:35 ` cvs-commit at gcc dot gnu dot org
@ 2005-07-15 14:22 ` amylaar at gcc dot gnu dot org
  2005-07-15 14:43 ` cvs-commit at gcc dot gnu dot org
  15 siblings, 0 replies; 29+ messages in thread
From: amylaar at gcc dot gnu dot org @ 2005-07-15 14:22 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From amylaar at gcc dot gnu dot org  2005-07-15 14:07 -------
An updated patch is here:
http://gcc.gnu.org/ml/gcc-patches/2005-07/msg01041.html

-- 


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


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

* [Bug rtl-optimization/20070] If-conversion can't match equivalent code, and cross-jumping only works for literal matches
  2005-02-19 15:55 [Bug rtl-optimization/20070] New: " amylaar at gcc dot gnu dot org
                   ` (12 preceding siblings ...)
  2005-07-12 13:30 ` amylaar at gcc dot gnu dot org
@ 2005-07-12 13:35 ` cvs-commit at gcc dot gnu dot org
  2005-07-15 14:22 ` amylaar at gcc dot gnu dot org
  2005-07-15 14:43 ` cvs-commit at gcc dot gnu dot org
  15 siblings, 0 replies; 29+ messages in thread
From: cvs-commit at gcc dot gnu dot org @ 2005-07-12 13:35 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From cvs-commit at gcc dot gnu dot org  2005-07-12 13:30 -------
Subject: Bug 20070

CVSROOT:	/cvs/gcc
Module name:	gcc
Branch: 	sh-elf-4_1-branch
Changes by:	amylaar@gcc.gnu.org	2005-07-12 13:29:58

Modified files:
	gcc            : ChangeLog basic-block.h cfgcleanup.c ifcvt.c 
	                 recog.c recog.h 

Log message:
	PR rtl-optimization/20070
	http://gcc.gnu.org/ml/gcc-patches/2005-07/msg00843.html
	* basic-block.h (STRUCT_EQUIV_START, STRUCT_EQUIV_RERUN): Define.
	(STRUCT_EQUIV_FINAL, STRUCT_EQUIV_MAX_LOCAL): Likewise.
	(struct struct_equiv_checkpoint, struct equiv_info): Likewise.
	(struct_equiv_block_eq): Declare.
	* cfgcleanup.c (reload.h, expr.h): #include.
	(IMPOSSIBLE_MOVE_FACTOR): Define.
	(flow_find_cross_jump): Remove.
	(assign_reg_reg_set, struct_equiv, struct_equiv_set): New functions.
	(struct_equiv_dst_mem, struct_equiv_make_checkpoint): Likewise.
	(struct_equiv_improve_checkpoint): Likewise.
	(struct_equiv_restore_checkpoint, struct_equiv_death): Likewise.
	(struct_equiv_block_eq): Likewise.
	(find_dying_inputs, resolve_input_conflict): Likewise.
	(try_crossjump_to_edge): Use struct_equiv_block_eq instead of
	flow_find_cross_jump.
	* ifcvt.c (noce_try_complex_cmove): New function.
	(noce_process_if_block): Call it.
	For flag_expensive_optimizations, update cond_exec_changed_p on
	success.
	(rest_of_handle_if_conversion): For flag_expensive_optimizations,
	provide if_convert with register lifeness info.
	
	Back out this change:
	2005-03-07  Kazu Hirata  <kazu@cs.umass.edu>
	* recog.c (verify_changes): Make it static.
	* recog.h: Remove the corresponding prototype.

Patches:
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/ChangeLog.diff?cvsroot=gcc&only_with_tag=sh-elf-4_1-branch&r1=2.8142.2.17&r2=2.8142.2.18
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/basic-block.h.diff?cvsroot=gcc&only_with_tag=sh-elf-4_1-branch&r1=1.246.2.2&r2=1.246.2.3
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/cfgcleanup.c.diff?cvsroot=gcc&only_with_tag=sh-elf-4_1-branch&r1=1.143.2.1&r2=1.143.2.2
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/ifcvt.c.diff?cvsroot=gcc&only_with_tag=sh-elf-4_1-branch&r1=1.184.2.1&r2=1.184.2.2
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/recog.c.diff?cvsroot=gcc&only_with_tag=sh-elf-4_1-branch&r1=1.221.4.1&r2=1.221.4.2
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/recog.h.diff?cvsroot=gcc&only_with_tag=sh-elf-4_1-branch&r1=1.55.4.1&r2=1.55.4.2



-- 


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


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

* [Bug rtl-optimization/20070] If-conversion can't match equivalent code, and cross-jumping only works for literal matches
  2005-02-19 15:55 [Bug rtl-optimization/20070] New: " amylaar at gcc dot gnu dot org
                   ` (11 preceding siblings ...)
  2005-07-07 18:30 ` amylaar at gcc dot gnu dot org
@ 2005-07-12 13:30 ` amylaar at gcc dot gnu dot org
  2005-07-12 13:35 ` cvs-commit at gcc dot gnu dot org
                   ` (2 subsequent siblings)
  15 siblings, 0 replies; 29+ messages in thread
From: amylaar at gcc dot gnu dot org @ 2005-07-12 13:30 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From amylaar at gcc dot gnu dot org  2005-07-12 13:14 -------
An updated patch is here:
http://gcc.gnu.org/ml/gcc-patches/2005-07/msg00843.html

-- 


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


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

* [Bug rtl-optimization/20070] If-conversion can't match equivalent code, and cross-jumping only works for literal matches
  2005-02-19 15:55 [Bug rtl-optimization/20070] New: " amylaar at gcc dot gnu dot org
                   ` (10 preceding siblings ...)
  2005-06-01 12:00 ` amylaar at gcc dot gnu dot org
@ 2005-07-07 18:30 ` amylaar at gcc dot gnu dot org
  2005-07-12 13:30 ` amylaar at gcc dot gnu dot org
                   ` (3 subsequent siblings)
  15 siblings, 0 replies; 29+ messages in thread
From: amylaar at gcc dot gnu dot org @ 2005-07-07 18:30 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From amylaar at gcc dot gnu dot org  2005-07-07 18:29 -------
An updated patch is here:
http://gcc.gnu.org/ml/gcc-patches/2005-07/msg00482.html

-- 


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


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

* [Bug rtl-optimization/20070] If-conversion can't match equivalent code, and cross-jumping only works for literal matches
  2005-02-19 15:55 [Bug rtl-optimization/20070] New: " amylaar at gcc dot gnu dot org
                   ` (9 preceding siblings ...)
  2005-05-26 14:35 ` amylaar at gcc dot gnu dot org
@ 2005-06-01 12:00 ` amylaar at gcc dot gnu dot org
  2005-07-07 18:30 ` amylaar at gcc dot gnu dot org
                   ` (4 subsequent siblings)
  15 siblings, 0 replies; 29+ messages in thread
From: amylaar at gcc dot gnu dot org @ 2005-06-01 12:00 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From amylaar at gcc dot gnu dot org  2005-06-01 11:59 -------
For the purposes of PR20070, it is sufficient that PR21767 is fixed on mainline.

-- 
           What    |Removed                     |Added
----------------------------------------------------------------------------
  BugsThisDependsOn|21767                       |


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


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

* [Bug rtl-optimization/20070] If-conversion can't match equivalent code, and cross-jumping only works for literal matches
  2005-02-19 15:55 [Bug rtl-optimization/20070] New: " amylaar at gcc dot gnu dot org
                   ` (8 preceding siblings ...)
  2005-04-12 18:56 ` amylaar at gcc dot gnu dot org
@ 2005-05-26 14:35 ` amylaar at gcc dot gnu dot org
  2005-06-01 12:00 ` amylaar at gcc dot gnu dot org
                   ` (5 subsequent siblings)
  15 siblings, 0 replies; 29+ messages in thread
From: amylaar at gcc dot gnu dot org @ 2005-05-26 14:35 UTC (permalink / raw)
  To: gcc-bugs



-- 
           What    |Removed                     |Added
----------------------------------------------------------------------------
  BugsThisDependsOn|                            |21767


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


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

* [Bug rtl-optimization/20070] If-conversion can't match equivalent code, and cross-jumping only works for literal matches
  2005-02-19 15:55 [Bug rtl-optimization/20070] New: " amylaar at gcc dot gnu dot org
                   ` (7 preceding siblings ...)
  2005-04-05  2:00 ` pinskia at gcc dot gnu dot org
@ 2005-04-12 18:56 ` amylaar at gcc dot gnu dot org
  2005-05-26 14:35 ` amylaar at gcc dot gnu dot org
                   ` (6 subsequent siblings)
  15 siblings, 0 replies; 29+ messages in thread
From: amylaar at gcc dot gnu dot org @ 2005-04-12 18:56 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From amylaar at gcc dot gnu dot org  2005-04-12 18:56 -------
PR and patch predate gcc 4.0 branch.

-- 
           What    |Removed                     |Added
----------------------------------------------------------------------------
OtherBugsDependingO|                            |17652
              nThis|                            |


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


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

* [Bug rtl-optimization/20070] If-conversion can't match equivalent code, and cross-jumping only works for literal matches
  2005-02-19 15:55 [Bug rtl-optimization/20070] New: " amylaar at gcc dot gnu dot org
                   ` (6 preceding siblings ...)
  2005-03-03 15:00 ` joern dot rennecke at st dot com
@ 2005-04-05  2:00 ` pinskia at gcc dot gnu dot org
  2005-04-12 18:56 ` amylaar at gcc dot gnu dot org
                   ` (7 subsequent siblings)
  15 siblings, 0 replies; 29+ messages in thread
From: pinskia at gcc dot gnu dot org @ 2005-04-05  2:00 UTC (permalink / raw)
  To: gcc-bugs



-- 
           What    |Removed                     |Added
----------------------------------------------------------------------------
   Target Milestone|4.1.0                       |---


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


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

* [Bug rtl-optimization/20070] If-conversion can't match equivalent code, and cross-jumping only works for literal matches
  2005-02-19 15:55 [Bug rtl-optimization/20070] New: " amylaar at gcc dot gnu dot org
                   ` (5 preceding siblings ...)
  2005-03-03  2:44 ` pinskia at gcc dot gnu dot org
@ 2005-03-03 15:00 ` joern dot rennecke at st dot com
  2005-04-05  2:00 ` pinskia at gcc dot gnu dot org
                   ` (8 subsequent siblings)
  15 siblings, 0 replies; 29+ messages in thread
From: joern dot rennecke at st dot com @ 2005-03-03 15:00 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From joern dot rennecke at st dot com  2005-03-03 14:59 -------
Subject: Re:  If-conversion can't match equivalent code, and cross-jumping only works for literal matches

pinskia at gcc dot gnu dot org wrote:

>------- Additional Comments From pinskia at gcc dot gnu dot org  2005-03-03 02:44 -------
>(In reply to comment #4)
>  
>
>>The recog.c / recog.h part of the patch has been committed as part
>>of another patch:
>>http://gcc.gnu.org/ml/gcc-patches/2005-03/msg00133.html
>>    
>>
>
>Yes this also caused a regression on ppc-darwin (it might also be reproducable with ppc-elf and ppc-
>linux).
>
>  
>
I've tried ppc-eabisim, but can't reproduce a failure there building gcc 
or newlib.  powerpc-apple-darwin7.4.0
wants lots of include files which I don't have.  Could you send me a 
preprocessed file so that I can test my patch
against that?


-- 


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


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

* [Bug rtl-optimization/20070] If-conversion can't match equivalent code, and cross-jumping only works for literal matches
  2005-02-19 15:55 [Bug rtl-optimization/20070] New: " amylaar at gcc dot gnu dot org
                   ` (4 preceding siblings ...)
  2005-03-02 22:06 ` amylaar at gcc dot gnu dot org
@ 2005-03-03  2:44 ` pinskia at gcc dot gnu dot org
  2005-03-03 15:00 ` joern dot rennecke at st dot com
                   ` (9 subsequent siblings)
  15 siblings, 0 replies; 29+ messages in thread
From: pinskia at gcc dot gnu dot org @ 2005-03-03  2:44 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From pinskia at gcc dot gnu dot org  2005-03-03 02:44 -------
(In reply to comment #4)
> The recog.c / recog.h part of the patch has been committed as part
> of another patch:
> http://gcc.gnu.org/ml/gcc-patches/2005-03/msg00133.html

Yes this also caused a regression on ppc-darwin (it might also be reproducable with ppc-elf and ppc-
linux).

-- 


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


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

* [Bug rtl-optimization/20070] If-conversion can't match equivalent code, and cross-jumping only works for literal matches
  2005-02-19 15:55 [Bug rtl-optimization/20070] New: " amylaar at gcc dot gnu dot org
                   ` (3 preceding siblings ...)
  2005-02-21 22:15 ` amylaar at gcc dot gnu dot org
@ 2005-03-02 22:06 ` amylaar at gcc dot gnu dot org
  2005-03-03  2:44 ` pinskia at gcc dot gnu dot org
                   ` (10 subsequent siblings)
  15 siblings, 0 replies; 29+ messages in thread
From: amylaar at gcc dot gnu dot org @ 2005-03-02 22:06 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From amylaar at gcc dot gnu dot org  2005-03-02 22:06 -------
The recog.c / recog.h part of the patch has been committed as part
of another patch:
http://gcc.gnu.org/ml/gcc-patches/2005-03/msg00133.html

-- 


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


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

* [Bug rtl-optimization/20070] If-conversion can't match equivalent code, and cross-jumping only works for literal matches
  2005-02-19 15:55 [Bug rtl-optimization/20070] New: " amylaar at gcc dot gnu dot org
                   ` (2 preceding siblings ...)
  2005-02-21 21:47 ` amylaar at gcc dot gnu dot org
@ 2005-02-21 22:15 ` amylaar at gcc dot gnu dot org
  2005-03-02 22:06 ` amylaar at gcc dot gnu dot org
                   ` (11 subsequent siblings)
  15 siblings, 0 replies; 29+ messages in thread
From: amylaar at gcc dot gnu dot org @ 2005-02-21 22:15 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From amylaar at gcc dot gnu dot org  2005-02-21 16:38 -------
While merging the patch in a 3.4.3 based branch, I noticed three small issues:

- The rest_of_handle_life prototype in passes.c is not necessary.  It is a
  vestige from a previous (more intrusive) attempt to provide life
  information to if_convert.
- In passes.c:rest_of_handle_if_conversion, at the end of the
  flag_expensive_optimizations code, EXIT_BLOCK_PTR->global_live_at_start
  has to be cleared for compatibility with this patch:

  2004-05-17  J"orn Rennecke <joern.rennecke@superh.com>

        * cse.c (trivially_dead_nonlocal_regs): New variable.
        (note_dead_set): New function.
        (delete_trivially_dead_insns): If life info is available, update it.

  For completeness, we might also clear ENTRY_BLOCK_PTR->global_live_at_end.
- config/pa/pa.c:pa_commutative_p is missing the parameter list:
  (rtx x, int outer_code)


-- 


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


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

* [Bug rtl-optimization/20070] If-conversion can't match equivalent code, and cross-jumping only works for literal matches
  2005-02-19 15:55 [Bug rtl-optimization/20070] New: " amylaar at gcc dot gnu dot org
  2005-02-19 16:03 ` [Bug rtl-optimization/20070] " amylaar at gcc dot gnu dot org
  2005-02-19 16:24 ` pinskia at gcc dot gnu dot org
@ 2005-02-21 21:47 ` amylaar at gcc dot gnu dot org
  2005-02-21 22:15 ` amylaar at gcc dot gnu dot org
                   ` (12 subsequent siblings)
  15 siblings, 0 replies; 29+ messages in thread
From: amylaar at gcc dot gnu dot org @ 2005-02-21 21:47 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From amylaar at gcc dot gnu dot org  2005-02-21 15:44 -------
regression testing of the patch in gcc 4.0 20050218 was successful.

-- 


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


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

* [Bug rtl-optimization/20070] If-conversion can't match equivalent code, and cross-jumping only works for literal matches
  2005-02-19 15:55 [Bug rtl-optimization/20070] New: " amylaar at gcc dot gnu dot org
  2005-02-19 16:03 ` [Bug rtl-optimization/20070] " amylaar at gcc dot gnu dot org
@ 2005-02-19 16:24 ` pinskia at gcc dot gnu dot org
  2005-02-21 21:47 ` amylaar at gcc dot gnu dot org
                   ` (13 subsequent siblings)
  15 siblings, 0 replies; 29+ messages in thread
From: pinskia at gcc dot gnu dot org @ 2005-02-19 16:24 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From pinskia at gcc dot gnu dot org  2005-02-19 05:04 -------
Confirmed based on RTH's comments to the patch.

-- 
           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
     Ever Confirmed|                            |1
   Last reconfirmed|0000-00-00 00:00:00         |2005-02-19 05:04:56
               date|                            |


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


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

* [Bug rtl-optimization/20070] If-conversion can't match equivalent code, and cross-jumping only works for literal matches
  2005-02-19 15:55 [Bug rtl-optimization/20070] New: " amylaar at gcc dot gnu dot org
@ 2005-02-19 16:03 ` amylaar at gcc dot gnu dot org
  2005-02-19 16:24 ` pinskia at gcc dot gnu dot org
                   ` (14 subsequent siblings)
  15 siblings, 0 replies; 29+ messages in thread
From: amylaar at gcc dot gnu dot org @ 2005-02-19 16:03 UTC (permalink / raw)
  To: gcc-bugs



-- 
           What    |Removed                     |Added
----------------------------------------------------------------------------
   Target Milestone|---                         |4.1.0


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


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

end of thread, other threads:[~2010-04-23  7:39 UTC | newest]

Thread overview: 29+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <bug-20070-5394@http.gcc.gnu.org/bugzilla/>
2005-12-01 20:17 ` [Bug rtl-optimization/20070] If-conversion can't match equivalent code, and cross-jumping only works for literal matches steven at gcc dot gnu dot org
2005-12-07 13:31 ` amylaar at gcc dot gnu dot org
2005-12-13 13:04 ` amylaar at gcc dot gnu dot org
2005-12-19 14:37 ` amylaar at gcc dot gnu dot org
2006-03-21  8:27 ` bonzini at gnu dot org
2006-03-21 14:24 ` amylaar at gcc dot gnu dot org
2006-11-17 18:58 ` amylaar at gcc dot gnu dot org
2009-06-14 19:54 ` steven at gcc dot gnu dot org
2009-09-04 14:51 ` rahul at icerasemi dot com
2010-01-08 17:08 ` steven at gcc dot gnu dot org
2010-01-09 21:27 ` steven at gcc dot gnu dot org
2010-01-11 12:34 ` rahul at icerasemi dot com
2010-04-23  7:39 ` steven at gcc dot gnu dot org
2005-02-19 15:55 [Bug rtl-optimization/20070] New: " amylaar at gcc dot gnu dot org
2005-02-19 16:03 ` [Bug rtl-optimization/20070] " amylaar at gcc dot gnu dot org
2005-02-19 16:24 ` pinskia at gcc dot gnu dot org
2005-02-21 21:47 ` amylaar at gcc dot gnu dot org
2005-02-21 22:15 ` amylaar at gcc dot gnu dot org
2005-03-02 22:06 ` amylaar at gcc dot gnu dot org
2005-03-03  2:44 ` pinskia at gcc dot gnu dot org
2005-03-03 15:00 ` joern dot rennecke at st dot com
2005-04-05  2:00 ` pinskia at gcc dot gnu dot org
2005-04-12 18:56 ` amylaar at gcc dot gnu dot org
2005-05-26 14:35 ` amylaar at gcc dot gnu dot org
2005-06-01 12:00 ` amylaar at gcc dot gnu dot org
2005-07-07 18:30 ` amylaar at gcc dot gnu dot org
2005-07-12 13:30 ` amylaar at gcc dot gnu dot org
2005-07-12 13:35 ` cvs-commit at gcc dot gnu dot org
2005-07-15 14:22 ` amylaar at gcc dot gnu dot org
2005-07-15 14:43 ` cvs-commit 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).