Re: RFC: objc_msgSend efficiency patch

2005-02-22 Thread Richard Henderson
On Mon, Feb 21, 2005 at 05:07:30PM -0800, Dale Johannesen wrote: > - r0 = gimplify_expr (&OBJ_TYPE_REF_OBJECT (*expr_p), pre_p, > post_p, > + /* Postincrements in OBJ_TYPE_REF_OBJECT don't affect the > + value of the OBJ_TYPE_REF, so force them to be emitted > +

Re: RFC: objc_msgSend efficiency patch

2005-02-22 Thread Dale Johannesen
On Feb 21, 2005, at 10:59 PM, Kai Henningsen wrote: [EMAIL PROTECTED] (Dale Johannesen) wrote on 21.02.05 in <[EMAIL PROTECTED]>: Simple Objective C programs such as #include void foo(void) { Object *o; [o++ free]; } result in calling objc_msgSend indirectly through a pointer, instead of

Re: RFC: objc_msgSend efficiency patch

2005-02-22 Thread Kai Henningsen
[EMAIL PROTECTED] (Dale Johannesen) wrote on 21.02.05 in <[EMAIL PROTECTED]>: > Simple Objective C programs such as > > #include > void foo(void) { >Object *o; >[o++ free]; > } > > result in calling objc_msgSend indirectly through a pointer, instead > of directly as they did in 3.3. Thi

Re: RFC: objc_msgSend efficiency patch

2005-02-21 Thread Mark Mitchell
Dale Johannesen wrote: OK, thanks. I can look into doing this in the ObjC-specific hook, unless you have a better idea? I've looked harder. See PR19148 for details about my patch. I think the key is that you not recursively call gimplify_expr with fb_lvalue. Since we're calling recursively wi

Re: RFC: objc_msgSend efficiency patch

2005-02-21 Thread Dale Johannesen
On Feb 21, 2005, at 5:21 PM, Mark Mitchell wrote: Dale Johannesen wrote: + /* Postincrements in OBJ_TYPE_REF_OBJECT don't affect the + value of the OBJ_TYPE_REF, so force them to be emitted + during subexpression evaluation rather than after the + OB

Re: RFC: objc_msgSend efficiency patch

2005-02-21 Thread Mark Mitchell
Dale Johannesen wrote: + /* Postincrements in OBJ_TYPE_REF_OBJECT don't affect the + value of the OBJ_TYPE_REF, so force them to be emitted + during subexpression evaluation rather than after the + OBJ_TYPE_REF. This permits objc_msgSend calls in Obj

RFC: objc_msgSend efficiency patch

2005-02-21 Thread Dale Johannesen
Simple Objective C programs such as #include void foo(void) { Object *o; [o++ free]; } result in calling objc_msgSend indirectly through a pointer, instead of directly as they did in 3.3. This seems to happen only at low optimization levels; still, it's a performance regression. The reason