This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

gcc/config/i960.c, asm label clash


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;
      }
  


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]