28 lines
942 B
C
28 lines
942 B
C
/* { dg-do compile } */
|
|
/* { dg-skip-if "split DWARF unsupported" { *-*-darwin* } } */
|
|
/* { dg-options "-g -O2 -fno-var-tracking-assignments -gsplit-dwarf" } */
|
|
|
|
/* This used to fail with location views (implicitly) enabled, because
|
|
var-tracking (not at assignments) creates a range for d starting at
|
|
the load after the first call, and we did not split the range,
|
|
despite its crossing between hot and cold partitions, because it's
|
|
a single range, that we normally extend to the entire function.
|
|
However, because the range starts at a (presumed) nonzero view, we
|
|
end up outputting a loclist instead of a single location entry.
|
|
But then, -gsplit-dwarf selects (startx,length) loclist entries,
|
|
and the length ends up computing the difference between symbols in
|
|
different subsections. */
|
|
|
|
int a;
|
|
__attribute__((__cold__)) void b();
|
|
|
|
void e(int *);
|
|
int f();
|
|
|
|
void c() {
|
|
int d;
|
|
e(&d);
|
|
a = d;
|
|
if (f())
|
|
b();
|
|
}
|