-/**
- * configure transformation callbacks
- */
-void sparc_register_transformers(void)
-{
- clear_irp_opcodes_generic_func();
- set_transformer(op_Add, gen_Add);
- set_transformer(op_Store, gen_Store);
- set_transformer(op_Const, gen_Const);
- set_transformer(op_Load, gen_Load);
- set_transformer(op_Sub, gen_Sub);
-
- set_transformer(op_be_AddSP, gen_be_AddSP);
- set_transformer(op_be_SubSP, gen_be_SubSP);
- set_transformer(op_be_Copy, gen_be_Copy);
- set_transformer(op_be_Call, gen_be_Call);
- set_transformer(op_be_FrameAddr, gen_be_FrameAddr);
-
- set_transformer(op_Cond, gen_Cond);
- set_transformer(op_Cmp, gen_Cmp);
-
- set_transformer(op_SymConst, gen_SymConst);
-
- set_transformer(op_Phi, gen_Phi);
- set_transformer(op_Proj, gen_Proj);
-
- set_transformer(op_Conv, gen_Conv);
- set_transformer(op_Jmp, gen_Jmp);
-
- set_transformer(op_Mul, gen_Mul);
- set_transformer(op_Mulh, gen_Mulh);
- set_transformer(op_Div, gen_Div);
- set_transformer(op_Abs, gen_Abs);
- set_transformer(op_Shl, gen_Shl);
- set_transformer(op_Shr, gen_Shr);
- set_transformer(op_Shrs, gen_Shra);
-
- set_transformer(op_Minus, gen_Minus);
- set_transformer(op_Not, gen_Not);
- set_transformer(op_And, gen_And);
- set_transformer(op_Or, gen_Or);
-
- set_transformer(op_Unknown, gen_Unknown);
-
- /* node list */
- /*
-
- set_transformer(op_CopyB, gen_CopyB);
- set_transformer(op_Eor, gen_Eor);
- set_transformer(op_Quot, gen_Quot);
- set_transformer(op_Rotl, gen_Rotl);
- */
-
- set_transformer(op_ASM, bad_transform);
- set_transformer(op_Builtin, bad_transform);
- set_transformer(op_CallBegin, bad_transform);
- set_transformer(op_Cast, bad_transform);
- set_transformer(op_Confirm, bad_transform);
- set_transformer(op_DivMod, bad_transform);
- set_transformer(op_EndExcept, bad_transform);
- set_transformer(op_EndReg, bad_transform);
- set_transformer(op_Filter, bad_transform);
- set_transformer(op_Free, bad_transform);
- set_transformer(op_Id, bad_transform);
- set_transformer(op_InstOf, bad_transform);
-
- set_transformer(op_Mux, bad_transform);
- set_transformer(op_Raise, bad_transform);
- set_transformer(op_Sel, bad_transform);
- set_transformer(op_Tuple, bad_transform);
-}
+ sparc_register_transformers();
+
+ node_to_stack = pmap_create();
+
+ mode_gp = sparc_reg_classes[CLASS_sparc_gp].mode;
+ mode_fp = sparc_reg_classes[CLASS_sparc_fp].mode;
+ mode_fp2 = mode_D;
+ //mode_fp4 = ?
+ mode_flags = sparc_reg_classes[CLASS_sparc_flags_class].mode;
+ assert(sparc_reg_classes[CLASS_sparc_fpflags_class].mode == mode_flags);
+
+ start_mem = NULL;
+ start_g0 = NULL;
+ start_g7 = NULL;
+ start_sp = NULL;
+ start_fp = NULL;
+ frame_base = NULL;
+
+ stackorder = be_collect_stacknodes(irg);
+ current_cconv
+ = sparc_decide_calling_convention(get_entity_type(entity), irg);
+ if (sparc_variadic_fixups(irg, current_cconv)) {
+ sparc_free_calling_convention(current_cconv);
+ current_cconv
+ = sparc_decide_calling_convention(get_entity_type(entity), irg);
+ }
+ sparc_create_stacklayout(irg, current_cconv);
+ be_add_parameter_entity_stores(irg);