Question on aggregates and GIMPLE

Richard Kenner kenner@vlsi1.ultra.nyu.edu
Thu Jun 10 00:48:00 GMT 2004


    Hmm.  I don't suppose

          || (flag_non_call_exceptions && tree_could_trap_p (*from_p))

    is true in gimplify_modify_expr?  

I think it would be, though my original guess was that it was another
part of that "if".  I just spotted this other issue before walking out
the door this morning and haven't gotten back to it yet.

    If so, I'm not sure how to approach this.  Other languages require
    that MODIFY_EXPRs be atomic.  That is, either all of it happens or
    none of it happens. 

How could it be "atomic" when it's more than one instruction?  Or do
you mean atomic from the point of view of *synchronous* exceptions only?

    I seem to recall that Ada's requirements here are
    significantly more relaxed.

Actually, I don't know Ada well enough to know for sure, though I suspect
you're right.  But I still don't follow.  If the RHS is going to trap,
presumably it'll trap on the *first* access and the operation will stop
before anything is done.

So I don't get this issue, nor see how it would be implementable at all.



More information about the Gcc mailing list