--- gcc/config/m68k.c 2018/04/24 17:51:38 1.1.1.1 +++ gcc/config/m68k.c 2018/04/24 18:06:25 1.1.1.3 @@ -44,17 +44,21 @@ enum reg_class regno_reg_class[] #endif /* defined SUPPORT_SUN_FPA */ +/* This flag is used to communicate between movhi and ASM_OUTPUT_CASE_END, + if SGS_SWITCH_TABLE. */ +int switch_table_difference_label_flag; + static rtx find_addr_reg (); rtx legitimize_pic_address (); /* Emit a (use pic_offset_table_rtx) if we used PIC relocation in the function at any time during the compilation process. In the future - we should try and eliminate the USE if we can easily deterine that + we should try and eliminate the USE if we can easily determine that all PIC references were deleted from the current function. That would save an address register */ -finalize_pic() +finalize_pic () { if (flag_pic && current_function_uses_pic_offset_table) emit_insn (gen_rtx (USE, VOIDmode, pic_offset_table_rtx)); @@ -92,30 +96,30 @@ output_function_prologue (stream, size) if (fsize < 0x8000 && !TARGET_68040) { #ifdef MOTOROLA - asm_fprintf (stream, "\tlink.w %s,%I%d\n", + asm_fprintf (stream, "\tlink.w %s,%0I%d\n", reg_names[FRAME_POINTER_REGNUM], -fsize); #else - asm_fprintf (stream, "\tlink %s,%I%d\n", + asm_fprintf (stream, "\tlink %s,%0I%d\n", reg_names[FRAME_POINTER_REGNUM], -fsize); #endif } else if (TARGET_68020) { #ifdef MOTOROLA - asm_fprintf (stream, "\tlink.l %s,%I%d\n", + asm_fprintf (stream, "\tlink.l %s,%0I%d\n", reg_names[FRAME_POINTER_REGNUM], -fsize); #else - asm_fprintf (stream, "\tlink %s,%I%d\n", + asm_fprintf (stream, "\tlink %s,%0I%d\n", reg_names[FRAME_POINTER_REGNUM], -fsize); #endif } else { #ifdef MOTOROLA - asm_fprintf (stream, "\tlink.w %s,%I0\n\tadd.l %I%d,%Rsp\n", + asm_fprintf (stream, "\tlink.w %s,%0I0\n\tadd.l %0I%d,%Rsp\n", reg_names[FRAME_POINTER_REGNUM], -fsize); #else - asm_fprintf (stream, "\tlink %s,%I0\n\taddl %I%d,%Rsp\n", + asm_fprintf (stream, "\tlink %s,%0I0\n\taddl %0I%d,%Rsp\n", reg_names[FRAME_POINTER_REGNUM], -fsize); #endif } @@ -126,17 +130,17 @@ output_function_prologue (stream, size) if (fsize + 4 < 0x8000) { #ifdef MOTOROLA - asm_fprintf (stream, "\tadd.w %I%d,%Rsp\n", - (fsize + 4)); + asm_fprintf (stream, "\tadd.w %0I%d,%Rsp\n", - (fsize + 4)); #else - asm_fprintf (stream, "\taddw %I%d,%Rsp\n", - (fsize + 4)); + asm_fprintf (stream, "\taddw %0I%d,%Rsp\n", - (fsize + 4)); #endif } else { #ifdef MOTOROLA - asm_fprintf (stream, "\tadd.l %I%d,%Rsp\n", - (fsize + 4)); + asm_fprintf (stream, "\tadd.l %0I%d,%Rsp\n", - (fsize + 4)); #else - asm_fprintf (stream, "\taddl %I%d,%Rsp\n", - (fsize + 4)); + asm_fprintf (stream, "\taddl %0I%d,%Rsp\n", - (fsize + 4)); #endif } } @@ -159,9 +163,9 @@ output_function_prologue (stream, size) if ((mask & 0xff) != 0) { #ifdef MOTOROLA - asm_fprintf (stream, "\tfmovm %I0x%x,-(%Rsp)\n", mask & 0xff); + asm_fprintf (stream, "\tfmovm %0I0x%x,-(%Rsp)\n", mask & 0xff); #else - asm_fprintf (stream, "\tfmovem %I0x%x,%Rsp@-\n", mask & 0xff); + asm_fprintf (stream, "\tfmovem %0I0x%x,%Rsp@-\n", mask & 0xff); #endif } mask = 0; @@ -176,6 +180,11 @@ output_function_prologue (stream, size) mask &= ~ (1 << (15 - FRAME_POINTER_REGNUM)); num_saved_regs--; } + +#if NEED_PROBE + fprintf (stream, "\ttstl sp@(%d)\n", NEED_PROBE - num_saved_regs * 4); +#endif + if (num_saved_regs <= 2) { /* Store each separately in the same order moveml uses. @@ -190,7 +199,7 @@ output_function_prologue (stream, size) if (mask & (1 << i)) asm_fprintf (stream, #ifdef MOTOROLA - "\tmov.l %s,-(%Rsp)\n", + "\t%Omove.l %s,-(%Rsp)\n", #else "\tmovel %s,%Rsp@-\n", #endif @@ -199,21 +208,21 @@ output_function_prologue (stream, size) else if (mask) { #ifdef MOTOROLA - asm_fprintf (stream, "\tmovm.l %I0x%x,-(%Rsp)\n", mask); + asm_fprintf (stream, "\tmovm.l %0I0x%x,-(%Rsp)\n", mask); #else - asm_fprintf (stream, "\tmoveml %I0x%x,%Rsp@-\n", mask); + asm_fprintf (stream, "\tmoveml %0I0x%x,%Rsp@-\n", mask); #endif } if (flag_pic && current_function_uses_pic_offset_table) { #ifdef MOTOROLA - asm_fprintf (stream, "\tmov.l %I__GLOBAL_OFFSET_TABLE_, %s\n", + asm_fprintf (stream, "\t%Omove.l %0I__GLOBAL_OFFSET_TABLE_, %s\n", reg_names[PIC_OFFSET_TABLE_REGNUM]); asm_fprintf (stream, "\tlea.l (%Rpc,%s.l),%s\n", reg_names[PIC_OFFSET_TABLE_REGNUM], reg_names[PIC_OFFSET_TABLE_REGNUM]); #else - asm_fprintf (stream, "\tmovel %I__GLOBAL_OFFSET_TABLE_, %s\n", + asm_fprintf (stream, "\tmovel %0I__GLOBAL_OFFSET_TABLE_, %s\n", reg_names[PIC_OFFSET_TABLE_REGNUM]); asm_fprintf (stream, "\tlea %Rpc@(0,%s:l),%s\n", reg_names[PIC_OFFSET_TABLE_REGNUM], @@ -268,7 +277,12 @@ output_function_epilogue (stream, size) if (GET_CODE (insn) == NOTE) insn = prev_nonnote_insn (insn); if (insn && GET_CODE (insn) == BARRIER) - return; + { + /* Output just a no-op so that debuggers don't get confused + about which function the pc is in at this address. */ + asm_fprintf (stream, "\tnop\n"); + return; + } #ifdef FUNCTION_EXTRA_EPILOGUE FUNCTION_EXTRA_EPILOGUE (stream, size); @@ -303,9 +317,9 @@ output_function_epilogue (stream, size) && (mask || fmask || fpoffset)) { #ifdef MOTOROLA - asm_fprintf (stream, "\tmov.l %I%d,%Ra0\n", -fsize); + asm_fprintf (stream, "\t%Omove.l %0I%d,%Ra0\n", -fsize); #else - asm_fprintf (stream, "\tmovel %I%d,%Ra0\n", -fsize); + asm_fprintf (stream, "\tmovel %0I%d,%Ra0\n", -fsize); #endif fsize = 0, big = 1; } @@ -325,7 +339,7 @@ output_function_epilogue (stream, size) if (big) { #ifdef MOTOROLA - asm_fprintf (stream, "\tmov.l -%d(%s,%Ra0.l),%s\n", + asm_fprintf (stream, "\t%Omove.l -%d(%s,%Ra0.l),%s\n", offset + fsize, reg_names[FRAME_POINTER_REGNUM], reg_names[i]); @@ -338,7 +352,7 @@ output_function_epilogue (stream, size) else if (! frame_pointer_needed) { #ifdef MOTOROLA - asm_fprintf (stream, "\tmov.l (%Rsp)+,%s\n", + asm_fprintf (stream, "\t%Omove.l (%Rsp)+,%s\n", reg_names[i]); #else asm_fprintf (stream, "\tmovel %Rsp@+,%s\n", @@ -348,7 +362,7 @@ output_function_epilogue (stream, size) else { #ifdef MOTOROLA - asm_fprintf (stream, "\tmov.l -%d(%s),%s\n", + asm_fprintf (stream, "\t%Omove.l -%d(%s),%s\n", offset + fsize, reg_names[FRAME_POINTER_REGNUM], reg_names[i]); @@ -366,12 +380,12 @@ output_function_epilogue (stream, size) if (big) { #ifdef MOTOROLA - asm_fprintf (stream, "\tmovm.l -%d(%s,%Ra0.l),%I0x%x\n", + asm_fprintf (stream, "\tmovm.l -%d(%s,%Ra0.l),%0I0x%x\n", offset + fsize, reg_names[FRAME_POINTER_REGNUM], mask); #else - asm_fprintf (stream, "\tmoveml %s@(-%d,%Ra0:l),%I0x%x\n", + asm_fprintf (stream, "\tmoveml %s@(-%d,%Ra0:l),%0I0x%x\n", reg_names[FRAME_POINTER_REGNUM], offset + fsize, mask); #endif @@ -379,20 +393,20 @@ output_function_epilogue (stream, size) else if (! frame_pointer_needed) { #ifdef MOTOROLA - asm_fprintf (stream, "\tmovm.l (%Rsp)+,%I0x%x\n", mask); + asm_fprintf (stream, "\tmovm.l (%Rsp)+,%0I0x%x\n", mask); #else - asm_fprintf (stream, "\tmoveml %Rsp@+,%I0x%x\n", mask); + asm_fprintf (stream, "\tmoveml %Rsp@+,%0I0x%x\n", mask); #endif } else { #ifdef MOTOROLA - asm_fprintf (stream, "\tmovm.l -%d(%s),%I0x%x\n", + asm_fprintf (stream, "\tmovm.l -%d(%s),%0I0x%x\n", offset + fsize, reg_names[FRAME_POINTER_REGNUM], mask); #else - asm_fprintf (stream, "\tmoveml %s@(-%d),%I0x%x\n", + asm_fprintf (stream, "\tmoveml %s@(-%d),%0I0x%x\n", reg_names[FRAME_POINTER_REGNUM], offset + fsize, mask); #endif @@ -403,12 +417,12 @@ output_function_epilogue (stream, size) if (big) { #ifdef MOTOROLA - asm_fprintf (stream, "\tfmovm -%d(%s,%Ra0.l),%I0x%x\n", + asm_fprintf (stream, "\tfmovm -%d(%s,%Ra0.l),%0I0x%x\n", foffset + fsize, reg_names[FRAME_POINTER_REGNUM], fmask); #else - asm_fprintf (stream, "\tfmovem %s@(-%d,%Ra0:l),%I0x%x\n", + asm_fprintf (stream, "\tfmovem %s@(-%d,%Ra0:l),%0I0x%x\n", reg_names[FRAME_POINTER_REGNUM], foffset + fsize, fmask); #endif @@ -416,20 +430,20 @@ output_function_epilogue (stream, size) else if (! frame_pointer_needed) { #ifdef MOTOROLA - asm_fprintf (stream, "\tfmovm (%Rsp)+,%I0x%x\n", fmask); + asm_fprintf (stream, "\tfmovm (%Rsp)+,%0I0x%x\n", fmask); #else - asm_fprintf (stream, "\tfmovem %Rsp@+,%I0x%x\n", fmask); + asm_fprintf (stream, "\tfmovem %Rsp@+,%0I0x%x\n", fmask); #endif } else { #ifdef MOTOROLA - asm_fprintf (stream, "\tfmovm -%d(%s),%I0x%x\n", + asm_fprintf (stream, "\tfmovm -%d(%s),%0I0x%x\n", foffset + fsize, reg_names[FRAME_POINTER_REGNUM], fmask); #else - asm_fprintf (stream, "\tfmovem %s@(-%d),%I0x%x\n", + asm_fprintf (stream, "\tfmovem %s@(-%d),%0I0x%x\n", reg_names[FRAME_POINTER_REGNUM], foffset + fsize, fmask); #endif @@ -485,22 +499,22 @@ output_function_epilogue (stream, size) if (fsize + 4 < 0x8000) { #ifdef MOTOROLA - asm_fprintf (stream, "\tadd.w %I%d,%Rsp\n", fsize + 4); + asm_fprintf (stream, "\tadd.w %0I%d,%Rsp\n", fsize + 4); #else - asm_fprintf (stream, "\taddw %I%d,%Rsp\n", fsize + 4); + asm_fprintf (stream, "\taddw %0I%d,%Rsp\n", fsize + 4); #endif } else { #ifdef MOTOROLA - asm_fprintf (stream, "\tadd.l %I%d,%Rsp\n", fsize + 4); + asm_fprintf (stream, "\tadd.l %0I%d,%Rsp\n", fsize + 4); #else - asm_fprintf (stream, "\taddl %I%d,%Rsp\n", fsize + 4); + asm_fprintf (stream, "\taddl %0I%d,%Rsp\n", fsize + 4); #endif } } if (current_function_pops_args) - asm_fprintf (stream, "\trtd %I%d\n", current_function_pops_args); + asm_fprintf (stream, "\trtd %0I%d\n", current_function_pops_args); else fprintf (stream, "\trts\n"); } @@ -515,6 +529,155 @@ not_sp_operand (op, mode) return op != stack_pointer_rtx && general_operand (op, mode); } +/* Return TRUE if X is a valid comparison operator for the dbcc + instruction. + + Note it rejects floating point comparison operators. + (In the future we could use Fdbcc). + + It also rejects some comparisons when CC_NO_OVERFLOW is set. */ + +int +valid_dbcc_comparison_p (x, mode) + rtx x; + enum machine_mode mode; +{ + /* We could add support for these in the future */ + if (cc_prev_status.flags & CC_IN_68881) + return 0; + + switch (GET_CODE (x)) + { + + case EQ: case NE: case GTU: case LTU: + case GEU: case LEU: + return 1; + + /* Reject some when CC_NO_OVERFLOW is set. This may be over + conservative */ + case GT: case LT: case GE: case LE: + return ! (cc_prev_status.flags & CC_NO_OVERFLOW); + default: + return 0; + } +} + +/* Output a dbCC; jCC sequence. Note we do not handle the + floating point version of this sequence (Fdbcc). We also + do not handle alternative conditions when CC_NO_OVERFLOW is + set. It is assumed that valid_dbcc_comparison_p will kick + those out before we get here. */ + +output_dbcc_and_branch (operands) + rtx *operands; +{ + + switch (GET_CODE (operands[3])) + { + case EQ: +#ifdef MOTOROLA + output_asm_insn ("dbeq %0,%l1\n\tjbeq %l2", operands); +#else + output_asm_insn ("dbeq %0,%l1\n\tjeq %l2", operands); +#endif + break; + + case NE: +#ifdef MOTOROLA + output_asm_insn ("dbne %0,%l1\n\tjbne %l2", operands); +#else + output_asm_insn ("dbne %0,%l1\n\tjne %l2", operands); +#endif + break; + + case GT: +#ifdef MOTOROLA + output_asm_insn ("dbgt %0,%l1\n\tjbgt %l2", operands); +#else + output_asm_insn ("dbgt %0,%l1\n\tjgt %l2", operands); +#endif + break; + + case GTU: +#ifdef MOTOROLA + output_asm_insn ("dbhi %0,%l1\n\tjbhi %l2", operands); +#else + output_asm_insn ("dbhi %0,%l1\n\tjhi %l2", operands); +#endif + break; + + case LT: +#ifdef MOTOROLA + output_asm_insn ("dblt %0,%l1\n\tjblt %l2", operands); +#else + output_asm_insn ("dblt %0,%l1\n\tjlt %l2", operands); +#endif + break; + + case LTU: +#ifdef MOTOROLA + output_asm_insn ("dbcs %0,%l1\n\tjbcs %l2", operands); +#else + output_asm_insn ("dbcs %0,%l1\n\tjcs %l2", operands); +#endif + break; + + case GE: +#ifdef MOTOROLA + output_asm_insn ("dbge %0,%l1\n\tjbge %l2", operands); +#else + output_asm_insn ("dbge %0,%l1\n\tjge %l2", operands); +#endif + break; + + case GEU: +#ifdef MOTOROLA + output_asm_insn ("dbcc %0,%l1\n\tjbcc %l2", operands); +#else + output_asm_insn ("dbcc %0,%l1\n\tjcc %l2", operands); +#endif + break; + + case LE: +#ifdef MOTOROLA + output_asm_insn ("dble %0,%l1\n\tjble %l2", operands); +#else + output_asm_insn ("dble %0,%l1\n\tjle %l2", operands); +#endif + break; + + case LEU: +#ifdef MOTOROLA + output_asm_insn ("dbls %0,%l1\n\tjbls %l2", operands); +#else + output_asm_insn ("dbls %0,%l1\n\tjls %l2", operands); +#endif + break; + + default: + abort (); + } + + /* If the decrement is to be done in SImode, then we have + to compensate for the fact that dbcc decrements in HImode. */ + switch (GET_MODE (operands[0])) + { + case SImode: +#ifdef MOTOROLA + output_asm_insn ("clr%.w %0\n\tsubq%.l %#1,%0\n\tjbpl %l1", operands); +#else + output_asm_insn ("clr%.w %0\n\tsubq%.l %#1,%0\n\tjpl %l1", operands); +#endif + break; + + case HImode: + break; + + default: + abort (); + } +} + char * output_btst (operands, countop, dataop, insn, signpos) rtx *operands; @@ -697,7 +860,7 @@ singlemove_string (operands) && INTVAL (operands[1]) < 128 && INTVAL (operands[1]) >= -128) { -#if defined(MOTOROLA) && !defined(CRDS) +#if defined (MOTOROLA) && !defined (CRDS) return "moveq%.l %1,%0"; #else return "moveq %1,%0"; @@ -1018,7 +1181,7 @@ output_move_const_double (operands) rtx *operands; { #ifdef SUPPORT_SUN_FPA - if (TARGET_FPA && FPA_REG_P(operands[0])) + if (TARGET_FPA && FPA_REG_P (operands[0])) { int code = standard_sun_fpa_constant_p (operands[1]); @@ -1092,10 +1255,9 @@ int standard_68881_constant_p (x) rtx x; { - union {double d; int i[2];} u; register double d; - /* fmovecr must be emulated on the 68040, so it shoudn't be used at all. */ + /* fmovecr must be emulated on the 68040, so it shouldn't be used at all. */ if (TARGET_68040) return 0; @@ -1104,14 +1266,7 @@ standard_68881_constant_p (x) return 0; #endif -#ifdef HOST_WORDS_BIG_ENDIAN - u.i[0] = CONST_DOUBLE_LOW (x); - u.i[1] = CONST_DOUBLE_HIGH (x); -#else - u.i[0] = CONST_DOUBLE_HIGH (x); - u.i[1] = CONST_DOUBLE_LOW (x); -#endif - d = u.d; + REAL_VALUE_FROM_CONST_DOUBLE (d, x); if (d == 0) return 0x0f; @@ -1143,7 +1298,6 @@ int floating_exact_log2 (x) rtx x; { - union {double d; int i[2];} u; register double d, d1; int i; @@ -1152,14 +1306,7 @@ floating_exact_log2 (x) return 0; #endif -#ifdef HOST_WORDS_BIG_ENDIAN - u.i[0] = CONST_DOUBLE_LOW (x); - u.i[1] = CONST_DOUBLE_HIGH (x); -#else - u.i[0] = CONST_DOUBLE_HIGH (x); - u.i[1] = CONST_DOUBLE_LOW (x); -#endif - d = u.d; + REAL_VALUE_FROM_CONST_DOUBLE (d, x); if (! (d > 0)) return 0; @@ -1203,7 +1350,6 @@ int standard_sun_fpa_constant_p (x) rtx x; { - union {double d; int i[2];} u; register double d; #if HOST_FLOAT_FORMAT != TARGET_FLOAT_FORMAT @@ -1211,10 +1357,7 @@ standard_sun_fpa_constant_p (x) return 0; #endif - - u.i[0] = CONST_DOUBLE_LOW (x); - u.i[1] = CONST_DOUBLE_HIGH (x); - d = u.d; + REAL_VALUE_FROM_CONST_DOUBLE (d, x); if (d == 0.0) return 0x200; /* 0 once 0x1ff is anded with it */ @@ -1244,7 +1387,7 @@ standard_sun_fpa_constant_p (x) /* * Stuff that looks different if it's single or double */ - if (GET_MODE(x) == SFmode) + if (GET_MODE (x) == SFmode) { if (d == S_E) return 0x8; @@ -1376,7 +1519,7 @@ print_operand (file, op, letter) } else if (letter == '#') { - asm_fprintf (file, "%I"); + asm_fprintf (file, "%0I"); } else if (letter == '-') { @@ -1404,11 +1547,7 @@ print_operand (file, op, letter) } else if (letter == '!') { -#ifdef MOTOROLA - asm_fprintf (file, "(%Rcc)"); -#else - asm_fprintf (file, "%Rcc"); -#endif + asm_fprintf (file, "%Rfpcr"); } else if (letter == '$') { @@ -1452,7 +1591,7 @@ print_operand (file, op, letter) } #ifdef SUPPORT_SUN_FPA else if ((letter == 'y' || letter == 'w') - && GET_CODE(op) == CONST_DOUBLE + && GET_CODE (op) == CONST_DOUBLE && (i = standard_sun_fpa_constant_p (op))) { fprintf (file, "%%%d", i & 0x1ff); @@ -1460,21 +1599,21 @@ print_operand (file, op, letter) #endif else if (GET_CODE (op) == CONST_DOUBLE && GET_MODE (op) == SFmode) { - union { double d; int i[2]; } u; + double d; union { float f; int i; } u1; - PRINT_OPERAND_EXTRACT_FLOAT (op); - u1.f = u.d; + REAL_VALUE_FROM_CONST_DOUBLE (d, op); + u1.f = d; PRINT_OPERAND_PRINT_FLOAT (letter, file); } else if (GET_CODE (op) == CONST_DOUBLE && GET_MODE (op) != DImode) { - union { double d; int i[2]; } u; - PRINT_OPERAND_EXTRACT_FLOAT (op); - ASM_OUTPUT_DOUBLE_OPERAND (file, u.d); + double d; + REAL_VALUE_FROM_CONST_DOUBLE (d, op); + ASM_OUTPUT_DOUBLE_OPERAND (file, d); } else { - asm_fprintf (file, "%I"); output_addr_const (file, op); + asm_fprintf (file, "%0I"); output_addr_const (file, op); } } @@ -1632,7 +1771,7 @@ print_operand_address (file, addr) ireg = reg2; } if (ireg != 0 && breg == 0 && GET_CODE (addr) == LABEL_REF - && ! (flag_pic && ireg == pic_offset_table_rtx)) + && ! (flag_pic && ireg == pic_offset_table_rtx)) { int scale = 1; if (GET_CODE (ireg) == MULT) @@ -1648,7 +1787,7 @@ print_operand_address (file, addr) CODE_LABEL_NUMBER (XEXP (addr, 0)), reg_names[REGNO (XEXP (ireg, 0))]); #else - asm_fprintf (file, "%LL%d-%LLI%d-2.b(%Rpc,%s.w", + asm_fprintf (file, "%LL%d-%LLI%d.b(%Rpc,%s.w", CODE_LABEL_NUMBER (XEXP (addr, 0)), CODE_LABEL_NUMBER (XEXP (addr, 0)), reg_names[REGNO (XEXP (ireg, 0))]); @@ -1668,7 +1807,7 @@ print_operand_address (file, addr) CODE_LABEL_NUMBER (XEXP (addr, 0)), reg_names[REGNO (ireg)]); #else - asm_fprintf (file, "%LL%d-%LLI%d-2.b(%Rpc,%s.l", + asm_fprintf (file, "%LL%d-%LLI%d.b(%Rpc,%s.l", CODE_LABEL_NUMBER (XEXP (addr, 0)), CODE_LABEL_NUMBER (XEXP (addr, 0)), reg_names[REGNO (ireg)]); @@ -1692,7 +1831,7 @@ print_operand_address (file, addr) break; } if (breg != 0 && ireg == 0 && GET_CODE (addr) == LABEL_REF - && ! (flag_pic && breg == pic_offset_table_rtx)) + && ! (flag_pic && breg == pic_offset_table_rtx)) { #ifdef MOTOROLA #ifdef SGS @@ -1700,7 +1839,7 @@ print_operand_address (file, addr) CODE_LABEL_NUMBER (XEXP (addr, 0)), reg_names[REGNO (breg)]); #else - asm_fprintf (file, "%LL%d-%LLI%d-2.b(%Rpc,%s.l", + asm_fprintf (file, "%LL%d-%LLI%d.b(%Rpc,%s.l", CODE_LABEL_NUMBER (XEXP (addr, 0)), CODE_LABEL_NUMBER (XEXP (addr, 0)), reg_names[REGNO (breg)]); @@ -1730,9 +1869,9 @@ print_operand_address (file, addr) { output_addr_const (file, addr); if ((flag_pic == 1) && (breg == pic_offset_table_rtx)) - fprintf (file, ":w"); + fprintf (file, ".w"); if ((flag_pic == 2) && (breg == pic_offset_table_rtx)) - fprintf (file, ":l"); + fprintf (file, ".l"); } fprintf (file, "(%s", reg_names[REGNO (breg)]); if (ireg != 0) @@ -1787,7 +1926,7 @@ print_operand_address (file, addr) break; } else if (reg1 != 0 && GET_CODE (addr) == LABEL_REF - && ! (flag_pic && reg1 == pic_offset_table_rtx)) + && ! (flag_pic && reg1 == pic_offset_table_rtx)) { #ifdef MOTOROLA #ifdef SGS @@ -1795,7 +1934,7 @@ print_operand_address (file, addr) CODE_LABEL_NUMBER (XEXP (addr, 0)), reg_names[REGNO (reg1)]); #else - asm_fprintf (file, "%LL%d-%LLI%d-2.b(%Rpc,%s.l)", + asm_fprintf (file, "%LL%d-%LLI%d.b(%Rpc,%s.l)", CODE_LABEL_NUMBER (XEXP (addr, 0)), CODE_LABEL_NUMBER (XEXP (addr, 0)), reg_names[REGNO (reg1)]);