re PR gcov-profile/52150 (junk at end of line in Firefox PGO build)

PR gcov-profile/52150
	* coverage.c: Include target.h.
	(build_var): Call targetm.strip_name_encoding on the assembler name.
	Change one _ into . or $ if the target allows it.
	* Makefile.in (coverage.o): Depend on $(TARGET_H).

	* gcc.dg/tree-prof/pr52150.c: New test.

From-SVN: r184006
This commit is contained in:
Jakub Jelinek 2012-02-08 14:27:31 +01:00 committed by Jakub Jelinek
parent bd73623c90
commit 9e66e106ab
5 changed files with 44 additions and 6 deletions

View File

@ -1,5 +1,11 @@
2012-02-08 Jakub Jelinek <jakub@redhat.com>
PR gcov-profile/52150
* coverage.c: Include target.h.
(build_var): Call targetm.strip_name_encoding on the assembler name.
Change one _ into . or $ if the target allows it.
* Makefile.in (coverage.o): Depend on $(TARGET_H).
PR rtl-optimization/52139
* cfgrtl.c (cfg_layout_merge_blocks): If BB_END
is a BARRIER after emit_insn_after_noloc, move BB_END

View File

@ -3002,7 +3002,7 @@ coverage.o : coverage.c $(GCOV_IO_H) $(CONFIG_H) $(SYSTEM_H) coretypes.h \
$(TM_H) $(RTL_H) $(TREE_H) $(FLAGS_H) output.h $(REGS_H) $(EXPR_H) \
$(FUNCTION_H) $(BASIC_BLOCK_H) toplev.h $(DIAGNOSTIC_CORE_H) $(GGC_H) langhooks.h $(COVERAGE_H) \
$(HASHTAB_H) tree-iterator.h $(CGRAPH_H) $(TREE_PASS_H) gcov-io.c $(TM_P_H) \
$(DIAGNOSTIC_CORE_H) intl.h gt-coverage.h
$(DIAGNOSTIC_CORE_H) intl.h gt-coverage.h $(TARGET_H)
cselib.o : cselib.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
$(REGS_H) hard-reg-set.h $(FLAGS_H) insn-config.h $(RECOG_H) \
$(EMIT_RTL_H) $(DIAGNOSTIC_CORE_H) output.h $(FUNCTION_H) $(TREE_PASS_H) \

View File

@ -1,6 +1,6 @@
/* Read and write coverage files, and associated functionality.
Copyright (C) 1990, 1991, 1992, 1993, 1994, 1996, 1997, 1998, 1999,
2000, 2001, 2003, 2004, 2005, 2007, 2008, 2009, 2010, 2011
2000, 2001, 2003, 2004, 2005, 2007, 2008, 2009, 2010, 2011, 2012
Free Software Foundation, Inc.
Contributed by James E. Wilson, UC Berkeley/Cygnus Support;
based on some ideas from Dain Samples of UC Berkeley.
@ -50,6 +50,7 @@ along with GCC; see the file COPYING3. If not see
#include "diagnostic-core.h"
#include "intl.h"
#include "filenames.h"
#include "target.h"
#include "gcov-io.h"
#include "gcov-io.c"
@ -656,13 +657,25 @@ static tree
build_var (tree fn_decl, tree type, int counter)
{
tree var = build_decl (BUILTINS_LOCATION, VAR_DECL, NULL_TREE, type);
tree fn_name = DECL_ASSEMBLER_NAME (fn_decl);
char *buf = (char *)alloca (IDENTIFIER_LENGTH (fn_name) + 10);
const char *fn_name = IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (fn_decl));
char *buf;
size_t fn_name_len, len;
fn_name = targetm.strip_name_encoding (fn_name);
fn_name_len = strlen (fn_name);
buf = XALLOCAVEC (char, fn_name_len + 8 + sizeof (int) * 3);
if (counter < 0)
sprintf (buf, "__gcov__%s", IDENTIFIER_POINTER (fn_name));
strcpy (buf, "__gcov__");
else
sprintf (buf, "__gcov%u_%s", counter, IDENTIFIER_POINTER (fn_name));
sprintf (buf, "__gcov%u_", counter);
len = strlen (buf);
#ifndef NO_DOT_IN_LABEL
buf[len - 1] = '.';
#elif !defined NO_DOLLAR_IN_LABEL
buf[len - 1] = '$';
#endif
memcpy (buf + len, fn_name, fn_name_len + 1);
DECL_NAME (var) = get_identifier (buf);
TREE_STATIC (var) = 1;
TREE_ADDRESSABLE (var) = 1;

View File

@ -1,5 +1,8 @@
2012-02-08 Jakub Jelinek <jakub@redhat.com>
PR gcov-profile/52150
* gcc.dg/tree-prof/pr52150.c: New test.
PR rtl-optimization/52139
* gcc.dg/pr52139.c: New test.

View File

@ -0,0 +1,16 @@
/* PR gcov-profile/52150 */
/* { dg-options "-O0" } */
void foo () __asm__ ("bar");
void
foo ()
{
}
int
main ()
{
foo ();
return 0;
}