This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
gcc/config/i960.c, asm label clash
- To: gcc-local at cygnus dot com, egcs-bugs at egcs dot cygnus dot com
- Subject: gcc/config/i960.c, asm label clash
- From: Felix Lee <flee at cygnus dot com>
- Date: Wed, 30 Jun 1999 19:45:47 -0700
symptom:
for target i960, while building libgcc,
fp-bit.s: Assembler messages:
fp-bit.s:165: Fatal error: Symbol LR1 already defined.
analysis:
gcc/config/i960.c generates "LR%d" labels. so does
live-range splitting.
fix:
Wed Jun 30 19:36:51 1999 Felix Lee <flee@cygnus.com>
* config/i960/i960.c (ret_label): change asm label from "LR:" to
"Li960R:", to avoid name clash.
Index: devo/gcc/config/i960.c
===================================================================
RCS file: /cvs/cvsfiles/devo/gcc/config/i960/i960.c,v
retrieving revision 1.44
diff -c -p -r1.44 i960.c
*** i960.c 1999/01/14 23:14:44 1.44
--- i960.c 1999/07/01 02:39:24
***************
*** 1,5 ****
/* Subroutines used for code generation on intel 80960.
! Copyright (C) 1992, 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
Contributed by Steven McGeady, Intel Corp.
Additional Work by Glenn Colon-Bonet, Jonathan Shapiro, Andy Wilson
Converted to GCC 2.0 by Jim Wilson and Michael Tiemann, Cygnus Support.
--- 1,5 ----
/* Subroutines used for code generation on intel 80960.
! Copyright (C) 1992, 1995, 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
Contributed by Steven McGeady, Intel Corp.
Additional Work by Glenn Colon-Bonet, Jonathan Shapiro, Andy Wilson
Converted to GCC 2.0 by Jim Wilson and Michael Tiemann, Cygnus Support.
*************** i960_function_name_declare (file, name,
*** 1385,1391 ****
assemble_name (file, name);
fprintf (file, ",%s.lf\n", (name[0] == '*' ? &name[1] : name));
ASM_OUTPUT_LABEL (file, name);
! fprintf (file, "\tlda LR%d,g14\n", ret_label);
fprintf (file, "%s.lf:\n", (name[0] == '*' ? &name[1] : name));
fprintf (file, "\tmov g14,g%d\n", i960_leaf_ret_reg);
--- 1385,1391 ----
assemble_name (file, name);
fprintf (file, ",%s.lf\n", (name[0] == '*' ? &name[1] : name));
ASM_OUTPUT_LABEL (file, name);
! fprintf (file, "\tlda Li960R%d,g14\n", ret_label);
fprintf (file, "%s.lf:\n", (name[0] == '*' ? &name[1] : name));
fprintf (file, "\tmov g14,g%d\n", i960_leaf_ret_reg);
*************** i960_function_epilogue (file, size)
*** 1768,1774 ****
{
if (i960_leaf_ret_reg >= 0)
{
! fprintf (file, "LR%d: ret\n", ret_label);
return;
}
--- 1768,1774 ----
{
if (i960_leaf_ret_reg >= 0)
{
! fprintf (file, "Li960R%d: ret\n", ret_label);
return;
}
*************** i960_function_epilogue (file, size)
*** 1798,1808 ****
}
break;
}
! fprintf (file, "LR%d: ret\n", ret_label);
return;
}
! fprintf (file, "LR%d:\n", ret_label);
fprintf (file, "\t#EPILOGUE#\n");
--- 1798,1808 ----
}
break;
}
! fprintf (file, "Li960R%d: ret\n", ret_label);
return;
}
! fprintf (file, "Li960R%d:\n", ret_label);
fprintf (file, "\t#EPILOGUE#\n");
*************** i960_output_ret_insn (insn)
*** 1887,1893 ****
if (! TARGET_CODE_ALIGN && next_real_insn (insn) == 0)
return "";
! sprintf (lbuf, "b LR%d", ret_label);
return lbuf;
}
--- 1887,1893 ----
if (! TARGET_CODE_ALIGN && next_real_insn (insn) == 0)
return "";
! sprintf (lbuf, "b Li960R%d", ret_label);
return lbuf;
}