be_emit_cstring(env->emit, "\tbl ");
if (ent) {
+ mark_entity_visited(ent);
be_emit_ident(env->emit, get_entity_ld_ident(ent));
} else {
arm_emit_source_register(env, irn, be_pos_Call_ptr);
* @return name of the SymConst
*/
const char *get_sc_name(ir_node *symc) {
+ ir_entity *ent;
if (get_irn_opcode(symc) != iro_SymConst)
return "NONE";
return get_id_str(get_SymConst_name(symc));
case symconst_addr_ent:
- return get_entity_ld_name(get_SymConst_entity(symc));
+ ent = get_SymConst_entity(symc);
+ mark_entity_visited(ent);
+ return get_entity_ld_name(ent);
default:
assert(0 && "Unsupported SymConst");
#include "arm_new_nodes.h" /* arm nodes interface */
#include "gen_arm_regalloc_if.h" /* the generated interface (register type and class defenitions) */
-#include "arm_gen_decls.h" /* interface declaration emitter */
#include "arm_transform.h"
#include "arm_emitter.h"
#include "arm_map_regs.h"
*
* Handle some special cases here:
* 1.) A constant: simply move
- * 2.) A load: siply load
+ * 2.) A load: simply load
*/
static ir_node *convert_sng_to_int(ir_node *bl, ir_node *arg) {
if (is_Const(arg)) {
arm_create_opcodes();
arm_handle_intrinsics();
+ /* we mark referenced global entities, so we can only emit those which
+ * are actually referenced. (Note: you mustn't use the type visited flag
+ * elsewhere in the backend)
+ */
+ inc_master_type_visited();
+
inited = 1;
return isa;
}