+2008-05-14  David S. Miller  <davem@davemloft.net>
+
+       * config/sparc/sparc.c (sparc_profile_hook): If
+       NO_PROFILE_COUNTERS, don't generate and pass a label
+       into mcount.
+       * config/sparc/linux.h (NO_PROFILE_COUNTERS): Define as 1.
+       * config/sparc/linux64.h (NO_PROFILE_COUNTERS): Likewise.
+
 2008-05-14  Andreas Krebbel  <krebbel1@de.ibm.com>
 
        * cse.c (cse_cc_succs): Invoke delete_insn_and_edges.
 
 
 /* Define if long doubles should be mangled as 'g'.  */
 #define TARGET_ALTERNATE_LONG_DOUBLE_MANGLING
+
+/* We use glibc _mcount for profiling.  */
+#define NO_PROFILE_COUNTERS    1
 
 
 /* Define if long doubles should be mangled as 'g'.  */
 #define TARGET_ALTERNATE_LONG_DOUBLE_MANGLING
+
+/* We use glibc _mcount for profiling.  */
+#define NO_PROFILE_COUNTERS    1
 
   char buf[32];
   rtx lab, fun;
 
-  ASM_GENERATE_INTERNAL_LABEL (buf, "LP", labelno);
-  lab = gen_rtx_SYMBOL_REF (Pmode, ggc_strdup (buf));
   fun = gen_rtx_SYMBOL_REF (Pmode, MCOUNT_FUNCTION);
-
-  emit_library_call (fun, LCT_NORMAL, VOIDmode, 1, lab, Pmode);
+  if (NO_PROFILE_COUNTERS)
+    {
+      emit_library_call (fun, LCT_NORMAL, VOIDmode, 0);
+    }
+  else
+    {
+      ASM_GENERATE_INTERNAL_LABEL (buf, "LP", labelno);
+      lab = gen_rtx_SYMBOL_REF (Pmode, ggc_strdup (buf));
+      emit_library_call (fun, LCT_NORMAL, VOIDmode, 1, lab, Pmode);
+    }
 }
 \f
 #ifdef OBJECT_FORMAT_ELF