From: David Y. <dav...@in...> - 2011-03-03 10:51:02
|
**The problem: paser_emit_ldarga() takes the address of a given variable. The emitted GENERIC looks like: temp = &arg; But the variable arg is not marked as addressable. It causes gimplifier to create a temporary variable in the following way: arg.1 = arg; temp = &arg.1; Thus, the taken address belongs to arg.1 and not to arg. It means that writes through *temp will not affect arg. **Fixed: It has been fixed. I just added mark_addressable(var) in parser_emit_ldarga(); **Affected benchmarks: 186.crafty (at least, probably most of the benchmarks). |