implemened add esp, 4/8 -> push/push
[libfirm] / ir / be / begnuas.c
index b78ab81..6f47d68 100644 (file)
@@ -140,15 +140,16 @@ void be_gas_emit_function_prolog(ir_entity *entity, unsigned alignment)
        be_emit_write_line();
 
        /* gcc fills space between function with 0x90, no idea if this is needed */
-       if(be_gas_flavour == GAS_FLAVOUR_MACH_O) {
+       if (be_gas_flavour == GAS_FLAVOUR_MACH_O) {
                fill_byte = "0x90";
        }
 
-       maximum_skip = (1 << alignment) - 1;
-       be_emit_cstring("\t.p2align ");
-       be_emit_irprintf("%u,%s,%u\n", alignment, fill_byte, maximum_skip);
-       be_emit_write_line();
-
+       if (alignment > 0) {
+               maximum_skip = (1 << alignment) - 1;
+               be_emit_cstring("\t.p2align ");
+               be_emit_irprintf("%u,%s,%u\n", alignment, fill_byte, maximum_skip);
+               be_emit_write_line();
+       }
        if (get_entity_visibility(entity) == visibility_external_visible) {
                be_emit_cstring(".globl ");
                be_emit_string(name);
@@ -222,26 +223,33 @@ static void dump_arith_tarval(tarval *tv, int bytes)
        switch (bytes) {
        case 1:
                be_emit_irprintf("0x%02x", get_tarval_sub_bits(tv, 0));
-               break;
+               return;
 
        case 2:
                be_emit_irprintf("0x%02x%02x", get_tarval_sub_bits(tv, 1), get_tarval_sub_bits(tv, 0));
-               break;
+               return;
 
        case 4:
                be_emit_irprintf("0x%02x%02x%02x%02x",
                        get_tarval_sub_bits(tv, 3), get_tarval_sub_bits(tv, 2), get_tarval_sub_bits(tv, 1), get_tarval_sub_bits(tv, 0));
-               break;
+               return;
 
        case 8:
                be_emit_irprintf("0x%02x%02x%02x%02x%02x%02x%02x%02x",
                        get_tarval_sub_bits(tv, 7), get_tarval_sub_bits(tv, 6), get_tarval_sub_bits(tv, 5), get_tarval_sub_bits(tv, 4),
                        get_tarval_sub_bits(tv, 3), get_tarval_sub_bits(tv, 2), get_tarval_sub_bits(tv, 1), get_tarval_sub_bits(tv, 0));
-               break;
+               return;
 
-       case 10:
        case 12:
-               break;
+               be_emit_irprintf("0x%02x%02x%02x%02x%02x%02x%02x%02x"
+                                  "%02x%02x%02x%02x", get_tarval_sub_bits(tv, 11),
+                               get_tarval_sub_bits(tv, 10), get_tarval_sub_bits(tv, 9),
+                               get_tarval_sub_bits(tv, 8), get_tarval_sub_bits(tv, 7),
+                               get_tarval_sub_bits(tv, 6), get_tarval_sub_bits(tv, 5),
+                               get_tarval_sub_bits(tv, 4), get_tarval_sub_bits(tv, 3),
+                               get_tarval_sub_bits(tv, 2), get_tarval_sub_bits(tv, 1),
+                               get_tarval_sub_bits(tv, 0));
+               return;
 
        case 16:
                be_emit_irprintf("0x%02x%02x%02x%02x%02x%02x%02x%02x"
@@ -254,13 +262,10 @@ static void dump_arith_tarval(tarval *tv, int bytes)
                        get_tarval_sub_bits(tv, 5), get_tarval_sub_bits(tv, 4),
                        get_tarval_sub_bits(tv, 3), get_tarval_sub_bits(tv, 2),
                        get_tarval_sub_bits(tv, 1), get_tarval_sub_bits(tv, 0));
-               break;
-
-
-       default:
-               fprintf(stderr, "Try to dump an tarval with %d bytes\n", bytes);
-               assert(0);
+               return;
        }
+
+       panic("Can't dump a tarval with %d bytes\n", bytes);
 }
 
 /**