Section anchors have broken profile data on powerpc*-linux; the problems
described here started with this mainline patch:

    http://gcc.gnu.org/viewcvs?view=rev&rev=113395

    r113395 | dje | 2006-04-30 19:23:13 +0000 (Sun, 30 Apr 2006)

Tests mesa, gap, and perlbmk in SPEC CPU2000 fail when compiled with -O1 and
-fprofile-generate/-fprofile-use, although all source files that contain static
variables have extra space generated after the profile counts.  Here's what I
get for file dlist.c in mesa:

        .section        ".bss"
        .align 3
        .set    .LANCHOR0,. + 0
        .type   .LPBX1, @object
        .size   .LPBX1, 8496
.LPBX1:
        .zero   8496
        .zero   18446744073709551128
        .type   init_flag.9563, @object
        .size   init_flag.9563, 4

In this case the assembler complains that ".space repeat count is zero" for the
line with the second .zero, and the -fprofile-use compile fails because of
corrupted profile data.  gcov shows bogus numbers in this case, although when
the size of the second .zero is small, tests run correctly and gcov data looks
fine.

I don't have a small test case that fails for -fprofile-use or has bogus gcov
results, but here's one where the second .zero is clearly bogus:

--------------------------------
void
foo (int *p, int n)
{
  int i;
  for (i = 0; i < n; i++)
    p[i] = i;
}

static int tmp [1000];

int
main ()
{
  foo (tmp, 1000);
  return 0;
}
--------------------------------

Part of the corresponding .s file:

        .section        ".bss"
        .align 3
        .set    .LANCHOR0,. + 0
        .type   .LPBX1, @object
        .size   .LPBX1, 32
.LPBX1:
        .zero   32
        .zero   7976
        .type   tmp, @object
        .size   tmp, 4000
tmp:
        .zero   4000


-- 
           Summary: section anchors break -fprofile-generate
           Product: gcc
           Version: 4.2.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: target
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: janis at gcc dot gnu dot org
GCC target triplet: powerpc-linux


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=28034

Reply via email to