public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug optimization/15241] [tree-ssa] Convert a <= 7 && b <= 7 into (a | b) <= 7.
  2004-05-01 12:58 [Bug optimization/15241] New: [tree-ssa] Convert a <= 7 && b <= 7 into (a | b) <= 7 kazu at cs dot umass dot edu
@ 2004-05-01 12:58 ` kazu at cs dot umass dot edu
  2004-05-01 13:05 ` pinskia at gcc dot gnu dot org
                   ` (3 subsequent siblings)
  4 siblings, 0 replies; 9+ messages in thread
From: kazu at cs dot umass dot edu @ 2004-05-01 12:58 UTC (permalink / raw)
  To: gcc-bugs



-- 
           What    |Removed                     |Added
----------------------------------------------------------------------------
           Severity|normal                      |enhancement


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


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

* [Bug optimization/15241] New: [tree-ssa] Convert a <= 7 && b <= 7 into (a | b) <= 7.
@ 2004-05-01 12:58 kazu at cs dot umass dot edu
  2004-05-01 12:58 ` [Bug optimization/15241] " kazu at cs dot umass dot edu
                   ` (4 more replies)
  0 siblings, 5 replies; 9+ messages in thread
From: kazu at cs dot umass dot edu @ 2004-05-01 12:58 UTC (permalink / raw)
  To: gcc-bugs

We should convert foo into bar (if profitable).

void baz ();

unsigned int
foo (unsigned int a, unsigned int b)
{
  if (a <= 7 && b <= 7)
    baz ();
}

unsigned int
bar (unsigned int a, unsigned int b)
{
  if ((a | b) <= 7)
    baz ();
}

The last SSA form looks like:

;; Function foo (foo)

foo (a, b)
{
  _Bool T.2;
  _Bool T.1;
  _Bool T.0;

<bb 0>:
  T.0_2 = a_1 <= 7;
  T.1_4 = b_3 <= 7;
  T.2_5 = T.0_2 && T.1_4;
  if (T.2_5) goto <L0>; else goto <L1>;

<L0>:;
  baz () [tail call];

<L1>:;
  return;

}



;; Function bar (bar)

bar (a, b)
{
  unsigned int T.3;

<bb 0>:
  T.3_3 = a_1 | b_2;
  if (T.3_3 <= 7) goto <L0>; else goto <L1>;

<L0>:;
  baz () [tail call];

<L1>:;
  return;

}

On i686-pc-linux-gnu, I get:

foo:
	cmpl	$7, 4(%esp)
	setbe	%dl
	cmpl	$7, 8(%esp)
	setbe	%al
	testb	%al, %dl
	jne	.L5
	rep ; ret
	.p2align 4,,7
.L5:
	jmp	baz
	.size	foo, .-foo
	.p2align 4,,15
.globl bar
	.type	bar, @function
bar:
	movl	8(%esp), %eax
	orl	4(%esp), %eax
	cmpl	$7, %eax
	jbe	.L9
	rep ; ret
	.p2align 4,,7
.L9:
	jmp	baz

-- 
           Summary: [tree-ssa] Convert a <= 7 && b <= 7 into (a | b) <= 7.
           Product: gcc
           Version: tree-ssa
            Status: UNCONFIRMED
          Keywords: pessimizes-code
          Severity: normal
          Priority: P2
         Component: optimization
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: kazu at cs dot umass dot edu
                CC: gcc-bugs at gcc dot gnu dot org


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


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

* [Bug optimization/15241] [tree-ssa] Convert a <= 7 && b <= 7 into (a | b) <= 7.
  2004-05-01 12:58 [Bug optimization/15241] New: [tree-ssa] Convert a <= 7 && b <= 7 into (a | b) <= 7 kazu at cs dot umass dot edu
  2004-05-01 12:58 ` [Bug optimization/15241] " kazu at cs dot umass dot edu
@ 2004-05-01 13:05 ` pinskia at gcc dot gnu dot org
  2004-05-01 13:10 ` pinskia at gcc dot gnu dot org
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 9+ messages in thread
From: pinskia at gcc dot gnu dot org @ 2004-05-01 13:05 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From pinskia at gcc dot gnu dot org  2004-05-01 13:05 -------
Confirmed but note I think this should happen late in compiling.

-- 
           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
     Ever Confirmed|                            |1
   Last reconfirmed|0000-00-00 00:00:00         |2004-05-01 13:05:40
               date|                            |
   Target Milestone|---                         |tree-ssa


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


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

* [Bug optimization/15241] [tree-ssa] Convert a <= 7 && b <= 7 into (a | b) <= 7.
  2004-05-01 12:58 [Bug optimization/15241] New: [tree-ssa] Convert a <= 7 && b <= 7 into (a | b) <= 7 kazu at cs dot umass dot edu
  2004-05-01 12:58 ` [Bug optimization/15241] " kazu at cs dot umass dot edu
  2004-05-01 13:05 ` pinskia at gcc dot gnu dot org
@ 2004-05-01 13:10 ` pinskia at gcc dot gnu dot org
  2004-05-09 22:11 ` pinskia at gcc dot gnu dot org
  2004-05-24 20:52 ` [Bug tree-optimization/15241] " pinskia at gcc dot gnu dot org
  4 siblings, 0 replies; 9+ messages in thread
From: pinskia at gcc dot gnu dot org @ 2004-05-01 13:10 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From pinskia at gcc dot gnu dot org  2004-05-01 13:10 -------
On PPC the former is much worse than the later:
_foo:
        subfic r3,r3,7
        li r3,0
        adde r3,r3,r3 // <-- r3 == r3 <=7 on some processors this is serializing
        subfic r4,r4,7
        li r4,0
        adde r4,r4,r4 // <--r4 == r4 <=7 on some processors this is serializing
        and. r0,r3,r4 // r0 = r4 & r3, cr0 = (rs3 & r4) == 0
        beqlr- cr0  // return if cr0(equal) is true
        b L_baz$stub
        .align 2
        .globl _bar
_bar:
        or r4,r3,r4
        cmplwi cr7,r4,7
        bgtlr- cr7
        b L_baz$stub

-- 


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


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

* [Bug optimization/15241] [tree-ssa] Convert a <= 7 && b <= 7 into (a | b) <= 7.
  2004-05-01 12:58 [Bug optimization/15241] New: [tree-ssa] Convert a <= 7 && b <= 7 into (a | b) <= 7 kazu at cs dot umass dot edu
                   ` (2 preceding siblings ...)
  2004-05-01 13:10 ` pinskia at gcc dot gnu dot org
@ 2004-05-09 22:11 ` pinskia at gcc dot gnu dot org
  2004-05-24 20:52 ` [Bug tree-optimization/15241] " pinskia at gcc dot gnu dot org
  4 siblings, 0 replies; 9+ messages in thread
From: pinskia at gcc dot gnu dot org @ 2004-05-09 22:11 UTC (permalink / raw)
  To: gcc-bugs



-- 
           What    |Removed                     |Added
----------------------------------------------------------------------------
  BugsThisDependsOn|                            |15357


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


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

* [Bug tree-optimization/15241] [tree-ssa] Convert a <= 7 && b <= 7 into (a | b) <= 7.
  2004-05-01 12:58 [Bug optimization/15241] New: [tree-ssa] Convert a <= 7 && b <= 7 into (a | b) <= 7 kazu at cs dot umass dot edu
                   ` (3 preceding siblings ...)
  2004-05-09 22:11 ` pinskia at gcc dot gnu dot org
@ 2004-05-24 20:52 ` pinskia at gcc dot gnu dot org
  4 siblings, 0 replies; 9+ messages in thread
From: pinskia at gcc dot gnu dot org @ 2004-05-24 20:52 UTC (permalink / raw)
  To: gcc-bugs



-- 
           What    |Removed                     |Added
----------------------------------------------------------------------------
   Target Milestone|3.5.0                       |---


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


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

* [Bug tree-optimization/15241] [tree-ssa] Convert a <= 7 && b <= 7 into (a | b) <= 7.
       [not found] <bug-15241-4@http.gcc.gnu.org/bugzilla/>
  2012-03-09  6:09 ` pinskia at gcc dot gnu.org
  2013-11-09 20:39 ` pinskia at gcc dot gnu.org
@ 2014-10-31  4:02 ` pinskia at gcc dot gnu.org
  2 siblings, 0 replies; 9+ messages in thread
From: pinskia at gcc dot gnu.org @ 2014-10-31  4:02 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=15241
Bug 15241 depends on bug 15459, which changed state.

Bug 15459 Summary: [meta-bug] there should be a tree combiner like the rtl one
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=15459

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


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

* [Bug tree-optimization/15241] [tree-ssa] Convert a <= 7 && b <= 7 into (a | b) <= 7.
       [not found] <bug-15241-4@http.gcc.gnu.org/bugzilla/>
  2012-03-09  6:09 ` pinskia at gcc dot gnu.org
@ 2013-11-09 20:39 ` pinskia at gcc dot gnu.org
  2014-10-31  4:02 ` pinskia at gcc dot gnu.org
  2 siblings, 0 replies; 9+ messages in thread
From: pinskia at gcc dot gnu.org @ 2013-11-09 20:39 UTC (permalink / raw)
  To: gcc-bugs

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

Bug 15241 depends on bug 15357, which changed state.

Bug 15357 Summary: [tree-ssa] combing if statements
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=15357

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


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

* [Bug tree-optimization/15241] [tree-ssa] Convert a <= 7 && b <= 7 into (a | b) <= 7.
       [not found] <bug-15241-4@http.gcc.gnu.org/bugzilla/>
@ 2012-03-09  6:09 ` pinskia at gcc dot gnu.org
  2013-11-09 20:39 ` pinskia at gcc dot gnu.org
  2014-10-31  4:02 ` pinskia at gcc dot gnu.org
  2 siblings, 0 replies; 9+ messages in thread
From: pinskia at gcc dot gnu.org @ 2012-03-09  6:09 UTC (permalink / raw)
  To: gcc-bugs

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

Andrew Pinski <pinskia at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |ASSIGNED
         AssignedTo|unassigned at gcc dot       |pinskia at gcc dot gnu.org
                   |gnu.org                     |

--- Comment #3 from Andrew Pinski <pinskia at gcc dot gnu.org> 2012-03-09 06:08:56 UTC ---
I am going to implement this in my tree combiner branch.  It should not be
hard.  Then what could be done is combineif could use the combiner to see if
things reduce and use that result.


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

end of thread, other threads:[~2014-10-31  4:01 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2004-05-01 12:58 [Bug optimization/15241] New: [tree-ssa] Convert a <= 7 && b <= 7 into (a | b) <= 7 kazu at cs dot umass dot edu
2004-05-01 12:58 ` [Bug optimization/15241] " kazu at cs dot umass dot edu
2004-05-01 13:05 ` pinskia at gcc dot gnu dot org
2004-05-01 13:10 ` pinskia at gcc dot gnu dot org
2004-05-09 22:11 ` pinskia at gcc dot gnu dot org
2004-05-24 20:52 ` [Bug tree-optimization/15241] " pinskia at gcc dot gnu dot org
     [not found] <bug-15241-4@http.gcc.gnu.org/bugzilla/>
2012-03-09  6:09 ` pinskia at gcc dot gnu.org
2013-11-09 20:39 ` pinskia at gcc dot gnu.org
2014-10-31  4:02 ` pinskia 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).