This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: question on bitmap_set_subtract unction in pre


On Tue, Feb 7, 2012 at 2:31 PM, Amker.Cheng <amker.cheng@gmail.com> wrote:
> On Mon, Feb 6, 2012 at 7:28 PM, Richard Guenther
> <richard.guenther@gmail.com> wrote:
>> It's probably to have the SET in some canonical form - the resulting
> I am wondering how the canonical form is maintained, since according
> to the paper:
> For an antileader set, it does not matter which expression represents
> a value, as long as that value is live.
> Could you show me where is the code maintaining such attributes?
>
>> values are simply re-computed from the expression subtraction
>> (multiple expressions may have the same value, so in
>> { a, b } { 0 } - { a } { 0 } you need to either compute { } { } or { b } { 0 }
>> neither which you can reach by simply subtracting both bitmaps.
> Take this example, Shouldn't the expected result be:
> ? {b}{0} if a is defined by some known expr;
> ? {} {} if a is defined by some unknown expr;
> which not as in gcc now. Following words are from the paper:
>
> A temporary potentially in ANTIC_IN becomes dead if it is assigned to.
> For an antileader set, it does not matter which expression represents a value,
> ?so long as that value is live. A temporary potentially in ANTIC_IN becomes
> ?dead if it is assigned to. If the assignment is from something we can make an
> ?expression for (as opposed to ?), that expression replaces the
> temporary as the
> ?antileader. If the assignment is from ?, then the value is no longer
> represented
> ?at all. Furthermore, any other expression that has that (no longer
> represented)
> ?value as an operand also becomes dead.
>
> In the previous expression subtraction, I don't see value depending on
> tmp which is defined by unknown operation like tmp<-? is handled.

I think it is not "handled" in the subtraction but by adding EXP_GEN to
the antic set (expressions we "set from" are in EXP_GEN, expressions
"assigned to" in TMP_GEN).

In that light doing subtracting based on expressions (instead of values)
makes sense as if there is an expression left that has value, value
stays in the set.  Thus, { a, b } { 0 } - { a } { 0 } == { b} { 0 } (assuming
both a and b have value 0).

But I neither have access to the paper nor tried to understand all the
very details ;)  (note that the implementation does not exactly match
the paper AFAIK, it has some further optimizations and corrections
for errors)

Richard.

> Still confused and most likely I have missed something important.
> Please help, thanks very much.
>
> --
> Best Regards.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]