Take the following code: typedef struct dw_cfi_oprnd_struct { unsigned long reg; } dw_cfa_location; dw_cfa_location loc; void def_cfa_1 (void) { loc.reg = loc.reg; }
We don't remove the store/load to loc.rec on the tree level. We even don't remove PIC startup code for ppc-darwin either: _def_cfa_1: mflr r0 stw r31,-4(r1) lwz r31,-4(r1) mtlr r0 blr -- Summary: Eustore does not remove stores for struct assignments Product: gcc Version: 4.1.0 Status: UNCONFIRMED Keywords: missed-optimization, TREE Severity: enhancement Priority: P2 Component: tree-optimization AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: pinskia at gcc dot gnu dot org CC: gcc-bugs at gcc dot gnu dot org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=22538