+static ir_entity *create_pic_symbol(be_main_env_t *be, ir_entity *entity)
+{
+ ident *old_id = get_entity_ld_ident(entity);
+ ident *id = mangle3("L", old_id, "$non_lazy_ptr");
+ ir_type *e_type = get_entity_type(entity);
+ ir_type *type = new_type_pointer(id, e_type, mode_P_data);
+ ir_type *parent = be->pic_symbols_type;
+ ir_entity *ent = new_entity(parent, old_id, type);
+ set_entity_ld_ident(ent, id);
+ set_entity_visibility(ent, visibility_local);
+ set_entity_variability(ent, variability_uninitialized);
+
+ return ent;
+}
+
+static ir_entity *get_pic_symbol(be_main_env_t *env, ir_entity *entity)
+{
+ ir_entity *result = pmap_get(env->ent_pic_symbol_map, entity);
+ if (result == NULL) {
+ result = create_pic_symbol(env, entity);
+ pmap_insert(env->ent_pic_symbol_map, entity, result);
+ }
+
+ return result;
+}
+
+
+