Commit 2ac69a0c by Nathan Sidwell Committed by Nathan Sidwell

re PR gcov-profile/51449 (Rev181994 causes tramp3d-v4 profiled build failure)

	PR gcov-profile/51449
	* coverage.c (coverage_end_function): Always process the coverage
	variables.

	testsuite/
	* g++.dg/gcov/gcov-14.C: New.

From-SVN: r182184
parent e2d04984
2011-12-10 Nathan Sidwell <nathan@acm.org>
PR gcov-profile/51449
* coverage.c (coverage_end_function): Always process the coverage
variables.
2011-12-09 Aldy Hernandez <aldyh@redhat.com> 2011-12-09 Aldy Hernandez <aldyh@redhat.com>
PR/51291 PR/51291
...@@ -604,20 +604,33 @@ coverage_end_function (unsigned lineno_checksum, unsigned cfg_checksum) ...@@ -604,20 +604,33 @@ coverage_end_function (unsigned lineno_checksum, unsigned cfg_checksum)
bbg_file_name = NULL; bbg_file_name = NULL;
} }
/* If the function is extern (i.e. extern inline), then we won't be if (fn_ctr_mask)
outputting it, so don't chain it onto the function list. */
if (fn_ctr_mask && !DECL_EXTERNAL (current_function_decl))
{ {
struct coverage_data *item = ggc_alloc_coverage_data (); struct coverage_data *item = 0;
/* If the function is extern (i.e. extern inline), then we won't
be outputting it, so don't chain it onto the function
list. */
if (!DECL_EXTERNAL (current_function_decl))
{
item = ggc_alloc_coverage_data ();
item->ident = current_function_funcdef_no + 1;
item->lineno_checksum = lineno_checksum;
item->cfg_checksum = cfg_checksum;
item->fn_decl = current_function_decl;
item->next = 0;
*functions_tail = item;
functions_tail = &item->next;
}
item->ident = current_function_funcdef_no + 1;
item->lineno_checksum = lineno_checksum;
item->cfg_checksum = cfg_checksum;
for (i = 0; i != GCOV_COUNTERS; i++) for (i = 0; i != GCOV_COUNTERS; i++)
{ {
tree var = fn_v_ctrs[i]; tree var = fn_v_ctrs[i];
item->ctr_vars[i] = var; if (item)
item->ctr_vars[i] = var;
if (var) if (var)
{ {
tree array_type = build_index_type (size_int (fn_n_ctrs[i] - 1)); tree array_type = build_index_type (size_int (fn_n_ctrs[i] - 1));
...@@ -627,17 +640,7 @@ coverage_end_function (unsigned lineno_checksum, unsigned cfg_checksum) ...@@ -627,17 +640,7 @@ coverage_end_function (unsigned lineno_checksum, unsigned cfg_checksum)
DECL_SIZE_UNIT (var) = TYPE_SIZE_UNIT (array_type); DECL_SIZE_UNIT (var) = TYPE_SIZE_UNIT (array_type);
varpool_finalize_decl (var); varpool_finalize_decl (var);
} }
}
item->fn_decl = current_function_decl;
item->next = 0;
*functions_tail = item;
functions_tail = &item->next;
}
if (fn_ctr_mask)
{
for (i = 0; i != GCOV_COUNTERS; i++)
{
fn_b_ctrs[i] = fn_n_ctrs[i] = 0; fn_b_ctrs[i] = fn_n_ctrs[i] = 0;
fn_v_ctrs[i] = NULL_TREE; fn_v_ctrs[i] = NULL_TREE;
} }
......
2011-12-10 Nathan Sidwell <nathan@acm.org>
PR gcov-profile/51449
* g++.dg/gcov/gcov-14.C: New.
2011-12-09 Eric Botcazou <ebotcazou@adacore.com> 2011-12-09 Eric Botcazou <ebotcazou@adacore.com>
* gcc.c-torture/compile/20111209-1.c: New test. * gcc.c-torture/compile/20111209-1.c: New test.
......
/* { dg-options "-fprofile-arcs -ftest-coverage -Ofast" } */
/* { dg-do run { target native } } */
#include <iostream>
void __attribute__ ((noinline))
Out (std::ostream &out, double x)
{ out << x << std::endl; } /* count(1) */
int main ()
{
Out (std::cout, 1.5); /* count(1) */
return 0;
}
/* { dg-final { run-gcov gcov-14.C } } */
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment