https://gcc.gnu.org/bugzilla/show_bug.cgi?id=120938

--- Comment #3 from Jan Hubicka <hubicka at gcc dot gnu.org> ---
Even smaller set of example. Bad profile:

#include <stdio.h>
volatile int variablev;
static void inc()
{
        variablev++;
}

static int zero = 0;

int main ()
{
        for (int i = 0; i < 100000000; i++)
        {
        inc();inc();
        inc();inc();

        }
        return 0;
}

good profile:

#include <stdio.h>
volatile int variablev;
static void inc()
{
        variablev++;
}

static int zero = 0;

int main ()
{
        for (int i = 0; i < 100000000; i++)
        {
        inc();inc();
        inc();
        inc();
        }
        return 0;
}

Only difference is the fourth invocation of inc().
I checked that the problem also reproduces with llvm's profile generator.
If the file is built with clang profiles are OK.

Diff of dwarf2 debug is not that small, I will attach it.

Reply via email to