- if(is_SymConst_addr_ent(irn)) {
- ir_entity *entity = get_SymConst_entity(irn);
- storage_class_class_t res = STORAGE_CLASS_GLOBALVAR;
- if (get_entity_address_taken(entity) == ir_address_not_taken) {
- res |= STORAGE_CLASS_MODIFIER_NOTTAKEN;
- }
- return res;
- } else if(irn == get_irg_frame(irg)) {
- /* TODO: we already skipped sels so we can't determine address_taken */
- return STORAGE_CLASS_LOCALVAR;
- } else if(is_arg_Proj(irn)) {
- return STORAGE_CLASS_ARGUMENT;
- } else if(irn == get_irg_tls(irg)) {
- /* TODO: we already skipped sels so we can't determine address_taken */
- return STORAGE_CLASS_TLS;
+ ir_storage_class_class_t res = ir_sc_pointer;
+ if (is_Global(irn)) {
+ ir_entity *entity = get_Global_entity(irn);
+ res = ir_sc_globalvar;
+ if (! (get_entity_usage(entity) & ir_usage_address_taken))
+ res |= ir_sc_modifier_nottaken;
+ } else if (irn == get_irg_frame(irg)) {
+ res = ir_sc_localvar;
+ if (ent != NULL && !(get_entity_usage(ent) & ir_usage_address_taken))
+ res |= ir_sc_modifier_nottaken;
+ } else if (is_arg_Proj(irn)) {
+ return ir_sc_argument;
+ } else if (irn == get_irg_tls(irg)) {
+ res = ir_sc_tls;
+ if (ent != NULL && !(get_entity_usage(ent) & ir_usage_address_taken))
+ res |= ir_sc_modifier_nottaken;