------- Comment #2 from pinskia at gcc dot gnu dot org 2007-07-13 02:26 ------- Reduced testcase: struct RegisterLayout { int intmask; }; struct Controller_t { static inline void disableInterrupt() { *mpMaskRegister = 0; }; static int * const mpMaskRegister; }; extern char SimulatedRegisters[]; int * const Controller_t::mpMaskRegister = &((RegisterLayout*)SimulatedRegisters)->intmask; void f() { Controller_t::disableInterrupt(); }
----- CUT ----- FRE is where it goes wrong: mpMaskRegister.0_1 = &((struct RegisterLayout *) (char *) &SimulatedRegisters)->intmask; -- pinskia at gcc dot gnu dot org changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |dberlin at gcc dot gnu dot | |org Status|UNCONFIRMED |NEW Ever Confirmed|0 |1 Last reconfirmed|0000-00-00 00:00:00 |2007-07-13 02:26:15 date| | http://gcc.gnu.org/bugzilla/show_bug.cgi?id=32746