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



--- Comment #25 from Richard Biener <rguenth at gcc dot gnu.org> 2013-03-05 
13:19:53 UTC ---

Btw, I cannot reproduce the issue with



t.c:



void bar (int *);

void foo (void)

{

  int a[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0,

      1, 2, 3, 4, 5, 6, 7, 8, 9, 0,

      1, 2, 3, 4, 5, 6, 7, 8, 9, 0,

      1, 2, 3, 4, 5, 6, 7, 8, 9, 0,

      1, 2, 3, 4, 5, 6, 7, 8, 9, 0,

      1, 2, 3, 4, 5, 6, 7, 8, 9, 0,

      1, 2, 3, 4, 5, 6, 7, 8, 9, 0,

      1, 2, 3, 4, 5, 6, 7, 8, 9, 0,

      1, 2, 3, 4, 5, 6, 7, 8, 9, 0,

      1, 2, 3, 4, 5, 6, 7, 8, 9, 0,

      1, 2, 3, 4, 5, 6, 7, 8, 9, 0,

      1, 2, 3, 4, 5, 6, 7, 8, 9, 0,

      1, 2, 3, 5, 6, 7, 8, 9, 0,

      1, 2, 3, 4, 5, 6, 7, 8, 9, 0,

      1, 2, 3, 4, 5, 6, 7, 8, 9, 0,

      1, 2, 3, 4, 5, 6, 7, 8, 9, 0,

      1, 2, 3, 4, 5, 6, 7, 8, 9, 0,

      1, 2, 3, 4, 5, 6, 7, 8, 9, 0,

      1, 2, 3, 4, 5, 6, 7, 8, 9, 0,

      1, 2, 3, 4, 5, 6, 7, 8, 9, 0,

      1, 2, 3, 4, 5, 6, 7, 8, 9, 0,

      1, 2, 3, 4, 5, 6, 7, 8, 9, 0,

      1, 2, 3, 4, 5, 6, 7, 8, 9, 0,

      1, 2, 3, 4, 5, 6, 7, 8, 9, 0,

      1, 2, 3, 4, 5, 6, 7, 8, 9, 0,

      1, 2, 3, 4, 5, 6, 7, 8, 9, 0,

      1, 2, 3, 4, 5, 6, 7, 8, 9, 0,

      1, 2, 3, 4, 5, 6, 7, 8, 9, 0,

      1, 2, 3, 4, 5, 6, 7, 8, 9, 0,

      1, 2, 3, 4, 5, 6, 7, 8, 9, 0,

      1, 2, 3, 4, 5, 6, 7, 8, 9, 0,

      1, 2, 3, 4, 5, 6, 7, 8, 9, 0,

      1, 2, 3, 4, 5, 6, 7, 8, 9, 0,

      1, 2, 3, 4, 5, 6, 7, 8, 9, 0,

      1, 2, 3, 4, 5, 6, 7, 8, 9, 0,

      1, 2, 3, 4, 5, 6, 7, 8, 9, 0,

      1, 2, 3, 4, 5, 6, 7, 8, 9, 0,

      1, 2, 3, 4, 5, 6, 7, 8, 9, 0,

      1, 2, 3, 4, 5, 6, 7, 8, 9, 0,

      1, 2, 3, 4, 5, 6, 7, 8, 9, 0,

      1, 2, 3, 4, 5, 6, 7, 8, 9, 0 };

  bar (a);

}



t2.c



void bar (int *);

void baz (void)

{

  int a[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0,

      1, 2, 3, 4, 5, 6, 7, 8, 9, 0,

      1, 2, 3, 4, 5, 6, 7, 8, 9, 0,

      1, 2, 3, 4, 5, 6, 7, 8, 9, 0,

      1, 2, 3, 4, 5, 6, 7, 8, 9, 0,

      1, 2, 3, 4, 5, 6, 7, 8, 9, 0,

      1, 2, 3, 4, 5, 6, 7, 8, 9, 0,

      1, 2, 3, 4, 5, 6, 7, 8, 9, 0,

      1, 2, 3, 4, 5, 6, 7, 8, 9, 0,

      1, 2, 3, 4, 5, 6, 7, 8, 9, 0,

      1, 2, 3, 4, 5, 6, 7, 8, 9, 0,

      1, 2, 3, 4, 5, 6, 7, 8, 9, 0,

      1, 2, 3, 4, 5, 6, 7, 8, 9, 0,

      1, 2, 3, 4, 5, 6, 7, 8, 9, 0,

      1, 2, 3, 4, 5, 6, 7, 8, 9, 0,

      1, 2, 3, 4, 5, 6, 7, 8, 9, 0,

      1, 2, 3, 4, 5, 6, 7, 8, 9, 0,

      1, 2, 3, 4, 5, 6, 7, 8, 9, 0,

      1, 2, 3, 4, 5, 6, 7, 8, 9, 0,

      1, 2, 3, 4, 5, 6, 7, 8, 9, 0,

      1, 2, 3, 4, 5, 6, 7, 8, 9, 0,

      1, 2, 3, 4, 5, 6, 7, 8, 9, 0,

      1, 2, 3, 4, 5, 6, 7, 8, 9, 0,

      1, 2, 3, 4, 5, 6, 7, 8, 9, 0,

      1, 2, 3, 4, 5, 6, 7, 8, 9, 0,

      1, 2, 3, 4, 5, 6, 7, 8, 9, 0,

      1, 2, 3, 4, 5, 6, 7, 8, 9, 0,

      1, 2, 3, 4, 5, 6, 7, 8, 9, 0,

      1, 2, 3, 4, 5, 6, 7, 8, 9, 0,

      1, 2, 3, 4, 5, 6, 7, 8, 9, 0,

      1, 2, 3, 4, 5, 6, 7, 8, 9, 0,

      1, 2, 3, 4, 5, 6, 7, 8, 9, 0,

      1, 2, 3, 4, 5, 6, 7, 8, 9, 0,

      1, 2, 3, 4, 5, 6, 7, 8, 9, 0,

      1, 2, 3, 4, 5, 6, 7, 8, 9, 0,

      1, 2, 3, 4, 5, 6, 7, 8, 9, 0,

      1, 2, 3, 4, 5, 6, 7, 8, 9, 0,

      1, 2, 3, 4, 5, 6, 7, 8, 9, 0 };

  bar (a);

}



t3.c:



void bar (int *a) { __builtin_printf ("%d\n", a[25]); }

int main()

{

  foo ();

  baz ();

  return 0;

}



and



gcc t.c t2.c t3.c -flto



I see three .LC0 being streamed in at WPA stage, shipped to a single

LTRANS unit and there getting .LC0, .LC1, and .LC2 symbols by means

of the existing build_constant_desc (they have all .LCO DECL_NAME decls,

but hey - even that would be fixed by my suggested patch.



Trying LTO Ada bootstrap now.  But I really fail to see how it should

break.

Reply via email to