------- Comment #8 from rguenth at gcc dot gnu dot org 2010-02-14 17:44 ------- Hm. So CCP through get_symbol_constant_value causes
<bb 2>: - _OBJC_CLASS_REFERENCES_0.2_1 = _OBJC_CLASS_REFERENCES_0; + _OBJC_CLASS_REFERENCES_0.2_1 = (struct objc_class *) &_OBJC_CLASS_NAME_0; _OBJC_CLASS_REFERENCES_0.3_2 = (struct objc_object *) _OBJC_CLASS_REFERENCES_0.2_1; - _OBJC_SELECTOR_REFERENCES_0.4_3 = _OBJC_SELECTOR_REFERENCES_0; + _OBJC_SELECTOR_REFERENCES_0.4_3 = (struct objc_selector *) &_OBJC_METH_VAR_NAME_1; D.3683_4 = OBJ_TYPE_REF(objc_msgSend;_OBJC_CLASS_REFERENCES_0.3_2->0) (_OBJC_CLASS_REFERENCES_0.3_2, _OBJC_SELECTOR_REFERENCES_0.4_3); - _OBJC_SELECTOR_REFERENCES_1.5_5 = _OBJC_SELECTOR_REFERENCES_1; + _OBJC_SELECTOR_REFERENCES_1.5_5 = (struct objc_selector *) &_OBJC_METH_VAR_NAME_0; OBJ_TYPE_REF(objc_msgSend;D.3683_4->0) (D.3683_4, _OBJC_SELECTOR_REFERENCES_1.5_5); return 0; which means that _OBJC_CLASS_REFERENCES_0 must be a TREE_READONLY static with an initializer. I wonder how exactly that tree looks like, so can you run the compile inside gdb, break on get_symbol_constant_value until you get _OBJC_CLASS_REFERENCES_0 as argument (may happen multiple times) and paste the output of (gdb) call debug_tree (sym) (gdb) call debug_tree (sym->decl_common.initial) ? Thanks. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43061