https://gcc.gnu.org/bugzilla/show_bug.cgi?id=22568
--- Comment #16 from Andrew Pinski ---
(In reply to Andrew Pinski from comment #15)
> The expr.c patch yes. The tree-ssa-phiopt.c patch, no. Tree-ssa-phiopt.c
> needs more code rework because of the new infrastructures so I have not
> gotten
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=22568
--- Comment #15 from Andrew Pinski ---
(In reply to Eric Gallager from comment #14)
> (In reply to Andrew Pinski from comment #12)
> > I have a patch to tree-ssa-phiopt.c to fix comment #1 though it needs
> > another patch to expr.c to produce
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=22568
--- Comment #14 from Eric Gallager ---
(In reply to Andrew Pinski from comment #12)
> I have a patch to tree-ssa-phiopt.c to fix comment #1 though it needs
> another patch to expr.c to produce the cmov directly from COND_EXPR. I hope
> to post
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=22568
Eric Gallager changed:
What|Removed |Added
Blocks|26914 |
CC|
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=22568
--- Comment #12 from Andrew Pinski pinskia at gcc dot gnu.org 2012-02-08
20:59:51 UTC ---
I have a patch to tree-ssa-phiopt.c to fix comment #1 though it needs another
patch to expr.c to produce the cmov directly from COND_EXPR. I hope to post
--- Comment #11 from rguenth at gcc dot gnu dot org 2006-01-15 19:11
---
Created an attachment (id=10647)
-- (http://gcc.gnu.org/bugzilla/attachment.cgi?id=10647action=view)
patch aft the point I stopped working on this
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=22568
--- Comment #9 from pinskia at gcc dot gnu dot org 2006-01-15 03:14 ---
This might be fixed by (I am checking right now):
2006-01-14 Ian Lance Taylor ian@airs.com
* ifcvt.c (noce_init_if_info): New static function, broken out of
noce_process_if_block.
--- Comment #10 from pinskia at gcc dot gnu dot org 2006-01-15 04:05
---
This was not fixed.
If I rewrite the function like:
ulong f1(ulong a, ulong b)
{
ulong tmp = ab?b:a;
ulong tmp1 = ab?a:b;
a = tmp;
b = tmp1;
return use (a, b)+use(a,b);
}
It works.
--
--- Additional Comments From bonzini at gcc dot gnu dot org 2005-09-02
09:47 ---
Richard, can you write a case where it produces awful code?
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=22568
--- Additional Comments From rguenth at gcc dot gnu dot org 2005-09-02
09:54 ---
Blindly applying ifcvt to something like
int a,b;
void foo(int flag)
{
int x;
if (flag)
x=a,a=b,b=x;
}
because we're presented with
if (flag)
{
int reg_a = a;
x = reg_a;
int reg_b
--- Additional Comments From rguenth at gcc dot gnu dot org 2005-09-01
12:38 ---
I have a patch that for
int a,b;
void foo(void)
{
int x;
if (ab) x=a,a=b,b=x;
}
produces
bar:
movla, %eax
movlb, %edx
cmpl%edx, %eax
movl%eax, %ecx
--- Additional Comments From rguenth at gcc dot gnu dot org 2005-08-31
09:40 ---
With new tree-codes instead of using COND_EXPR we may use the tree-vectorizers
if-conversion and make expand preserve the conditional moves.
Also it shouldn't be too hard to hack rtl if-conversion to
--- Additional Comments From pinskia at gcc dot gnu dot org 2005-07-20
15:11 ---
IIRC ifcvt is not smart enough to do this.
Confirmed.
--
What|Removed |Added
13 matches
Mail list logo