On 1/18/07, Jeffrey Law <[EMAIL PROTECTED]> wrote:
On Thu, 2007-01-18 at 12:44 +0530, pranav bhandarkar wrote:
> On 1/17/07, Mircea Namolaru <[EMAIL PROTECTED]> wrote:
> > > Thanks. Another question I have is that, in this case, will the
> > following
> > >
> > > http://gcc.gnu.org/wiki/Sign_Exte
On 1/18/07, Richard Kenner <[EMAIL PROTECTED]> wrote:
> I'm not immediately aware of too many cases where lowering the IL is
> going to expose new opportunities to track and optimize nonzero/zero
> bits stuff.
Bitfield are the big one. If you have both bitfield and logical operations,
you can o
> I'm not immediately aware of too many cases where lowering the IL is
> going to expose new opportunities to track and optimize nonzero/zero
> bits stuff.
Bitfield are the big one. If you have both bitfield and logical operations,
you can often merge the logical operations with those used to r
> Basically we keep track of the known zero, sign bit copies and known
> nonzero bits for SSA names, then propagate them in the obvious ways.
> Basically replicating a lot of what combine & cse do in this area,
> but at the tree level. It's something I've always wanted to see
> implemented, but
On Thu, 2007-01-18 at 09:41 +0100, Steven Bosscher wrote:
> There appear to be more bit operations in RTL, so perhaps it is a
> better idea to implement a known-bits propagation pass for RTL, with
> the new dataflow engine.
If that's the case then most of the opportunities are appearing due to
low
On Thursday 18 January 2007 09:31, Jeffrey Law wrote:
> I haven't followed this thread that closely, but it seems to me this
> could be done in the propagation engine.
>
> Basically we keep track of the known zero, sign bit copies and known
> nonzero bits for SSA names, then propagate them in the o
On Thu, 2007-01-18 at 12:44 +0530, pranav bhandarkar wrote:
> On 1/17/07, Mircea Namolaru <[EMAIL PROTECTED]> wrote:
> > > Thanks. Another question I have is that, in this case, will the
> > following
> > >
> > > http://gcc.gnu.org/wiki/Sign_Extension_Removal
> > >
> > > help in removal of the sign
On 1/17/07, Mircea Namolaru <[EMAIL PROTECTED]> wrote:
> Thanks. Another question I have is that, in this case, will the
following
>
> http://gcc.gnu.org/wiki/Sign_Extension_Removal
>
> help in removal of the sign / zero extension ?
First, it seems to me that in your case:
(1) a = a | 1 /* a |=
Also this is removed for the case of integers by the CSE pass
IIRC . The problem arises only for the type being a char or a short.
Yes, That is true. With gcc 4.1 one of the 'or's gets eliminated for
'int'. I am putting below two sets of logs. The first just before
cse_main and the second just a
On 1/17/07, Mircea Namolaru <[EMAIL PROTECTED]> wrote:
[EMAIL PROTECTED] (Richard Kenner) wrote on 17/01/2007 18:04:20:
> > First, it seems to me that in your case:
> >
> > (1) a = a | 1 /* a |= 1 */
> > (2) a = a | 1 /* a |= 1 */
> >
> > the expressions "a | 1" in (1) and (2) are different as t
[EMAIL PROTECTED] (Richard Kenner) wrote on 17/01/2007 18:04:20:
> > First, it seems to me that in your case:
> >
> > (1) a = a | 1 /* a |= 1 */
> > (2) a = a | 1 /* a |= 1 */
> >
> > the expressions "a | 1" in (1) and (2) are different as the "a"
> > is not the same. So there is nothing to do f
> First, it seems to me that in your case:
>
> (1) a = a | 1 /* a |= 1 */
> (2) a = a | 1 /* a |= 1 */
>
> the expressions "a | 1" in (1) and (2) are different as the "a"
> is not the same. So there is nothing to do for CSE.
It's not a CSE issue, but after (1), you know that the low-order bit of
> Thanks. Another question I have is that, in this case, will the
following
>
> http://gcc.gnu.org/wiki/Sign_Extension_Removal
>
> help in removal of the sign / zero extension ?
First, it seems to me that in your case:
(1) a = a | 1 /* a |= 1 */
(2) a = a | 1 /* a |= 1 */
the expressions "a | 1
> Thanks. Another question I have is that, in this case, will the
following
>
> http://gcc.gnu.org/wiki/Sign_Extension_Removal
>
> help in removal of the sign / zero extension ?
First, it seems to me that in your case:
(1) a = a | 1 /* a |= 1 */
(2) a = a | 1 /* a |= 1 */
the expressions "a | 1
On 1/15/07, Richard Guenther <[EMAIL PROTECTED]> wrote:
On 1/15/07, pranav bhandarkar <[EMAIL PROTECTED]> wrote:
> Hello Everyone,
> I have the following source code
>
> static int i;
> static char a;
>
> char foo_gen(int);
> void foo_assert(char);
> void foo ()
> {
>int *x = &i;
>a = foo
On 1/15/07, pranav bhandarkar <[EMAIL PROTECTED]> wrote:
Hello Everyone,
I have the following source code
static int i;
static char a;
char foo_gen(int);
void foo_assert(char);
void foo ()
{
int *x = &i;
a = foo_gen(0);
a |= 1; /* 1-*/
if (*x) goto end:
a | =1; /* --
Hello Everyone,
I have the following source code
static int i;
static char a;
char foo_gen(int);
void foo_assert(char);
void foo ()
{
int *x = &i;
a = foo_gen(0);
a |= 1; /* 1-*/
if (*x) goto end:
a | =1; /* -2--*/
foo_assert(a);
end:
return;
}
Now I expect th
17 matches
Mail list logo