Bug 5956

Summary: selectors aren't matched properly when added to the selector table
Product: gcc Reporter: Alexander Malmberg <alexander>
Component: objcAssignee: Nicola Pero <nicola>
Status: RESOLVED FIXED    
Severity: normal CC: gcc-bugs, nicola
Priority: P3 Keywords: missed-optimization
Version: 3.0.3   
Target Milestone: ---   
Host: Target:
Build: Known to work:
Known to fail: Last reconfirmed:
Attachments: gcc_selector_match.patch

Description Alexander Malmberg 2002-03-13 17:36:00 UTC
Due to a simple mixup, build_typed_selector_reference() won't properly match the new selector with existing selectors (TREE_PURPOSE() and TREE_VALUE()) are mixed up).

This doesn't cause incorrect code, but the selector tables are unnecessarily large; it bloats all objective-c code (by approximately 10% in the cases I've measured).

I've attached a patch that fixes this.

Release:
gcc version 3.0.3

How-To-Repeat:
Compile any program that contains two references to the same selector, eg:

[someobject foo];
[someobject foo];

The resulting selector table will have to entries for 'foo'.
Comment 1 Alexander Malmberg 2002-03-13 17:36:00 UTC
Fix:
Apply the patch.
Comment 2 Nicola Pero 2002-09-03 03:41:00 UTC
Responsible-Changed-From-To: unassigned->nicola
Responsible-Changed-Why: I managed it
Comment 3 Nicola Pero 2002-09-03 03:41:00 UTC
State-Changed-From-To: open->closed
State-Changed-Why: Thanks Alex - I had your patch (finally!) applied to GCC 3.3! :-)