From: Hans-Peter Nilsson Date: Mon, 22 Sep 2008 01:54:41 +0000 (+0000) Subject: re PR target/37170 (gcc.dg/weak/weak-1.c) X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=187fcb85b64e556f8e1142fa944ed05e5a21fc57;p=platform%2Fupstream%2Fgcc.git re PR target/37170 (gcc.dg/weak/weak-1.c) PR middle-end/37170 PR middle-end/37280 * gcc.dg/weak/weak-15.c, gcc.dg/weak/weak-16.c, g++.dg/ext/inline1.C: New tests. From-SVN: r140540 --- diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 370a370..ca0e708 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,10 @@ +2008-09-22 Hans-Peter Nilsson + + PR middle-end/37170 + PR middle-end/37280 + * gcc.dg/weak/weak-15.c, gcc.dg/weak/weak-16.c, + g++.dg/ext/inline1.C: New tests. + 2008-09-21 Kaz Kojima PR rtl-optimization/33642 @@ -2738,7 +2745,7 @@ * gfortran.dg/cshift_char_3.f90: New test case. * gfortran.dg/cshift_nan_1.f90: New test case. -2008-08-14 Rafael Ávila de Espíndola +2008-08-14 Rafael Ávila de Espíndola * gcc.dg/visibility-14.c: New test. * gcc.dg/visibility-15.c: New test. @@ -3460,7 +3467,7 @@ PR tree-optimization/36967 * gfortran.dg/pr36967.f: New testcase. -2008-07-30 Rafael Ávila de Espíndola +2008-07-30 Rafael Ávila de Espíndola * gcc.dg/visibility-14.c: New test. * gcc.dg/visibility-15.c: New test. @@ -5154,7 +5161,7 @@ dg-additional-sources. (profopt-execute): Handle additional sources. -2008-05-28 Rafael Espíndola +2008-05-28 Rafael Espíndola * gcc.dg/20080528-1.c: New test. @@ -5291,7 +5298,7 @@ * g++.dg/template/inline1.C: For the not-defined symbol, use the pattern from g++.dg/template/qualttp17.C. -2008-05-23 Rafael Espíndola +2008-05-23 Rafael Espíndola * gcc.c-torture/compile/20080522-1.c: Move to gcc.dg. * gcc.dg/20080522-1.c: Moved from gcc.c-torture. @@ -5329,7 +5336,7 @@ * gfortran.dg/cshift_large_1.f90: New test. * gfortran.dg/eoshift_large_1.f90: New test. -2008-05-22 Rafael Espíndola +2008-05-22 Rafael Espíndola * gcc.c-torture/compile/20080522-1.c: New testcase. @@ -6094,7 +6101,7 @@ PR fortran/36162 * gfortran.dg/module_widestring_1.f90: New test. -2008-05-08 Rafael Espíndola +2008-05-08 Rafael Espíndola * gcc.dg/vect/vect-111.c: Rename to no-trapping-math-vect-111.c * gcc.dg/vect/vect-ifcvt-11.c: Rename to no-trapping-math-vect-ifcvt-11.c @@ -7033,7 +7040,7 @@ PR fortran/35780 * gfortran.dg/simplify_argN_1.f90: New test. -2008-04-06 Tobias Schlüter +2008-04-06 Tobias Schlüter PR fortran/35832 * gfortran.dg/io_constraints_2.f90: Adapt to new error message. @@ -8794,7 +8801,7 @@ * g++.dg/torture/pr35164-1.C: New testcase. * g++.dg/torture/pr35164-2.C: Likewise. -2008-02-15 Dominique d'Humières +2008-02-15 Dominique d'Humières PR testsuite/35119 * g++.dg/template/spec35.C: Change the regular expressions diff --git a/gcc/testsuite/g++.dg/ext/inline1.C b/gcc/testsuite/g++.dg/ext/inline1.C new file mode 100644 index 0000000..7e5f062 --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/inline1.C @@ -0,0 +1,34 @@ +// { dg-do compile } +// { dg-options "-O" } +// Make sure inlined non-outlined functions aren't marked weak. +// We'd get a ".weak xyzzy" annotation trigged by the second declaration. + +// { dg-final { scan-assembler-not "weak\[^ \t\]*\[ \t\]_?xyzzy" } } + +// The next check isn't really part of the actual test, just to make +// sure there's no outline-copy of xyzzy, because if that really +// happened, it *should* be marked linkonce or perhaps weak. +// { dg-final { scan-assembler-not "xyzzy" } } + +extern int x; +extern void foo(void); +extern void bar(void); + +extern "C" inline int xyzzy(int a) +{ + foo(); + return a + x; +} + +extern "C" int xyzzy(int); + +extern inline int plugh(int c) +{ + return xyzzy (c); +} + +int y; +void doit(int b) +{ + y = xyzzy (b) + plugh (b); +} diff --git a/gcc/testsuite/gcc.dg/weak/weak-15.c b/gcc/testsuite/gcc.dg/weak/weak-15.c new file mode 100644 index 0000000..2218ca4 --- /dev/null +++ b/gcc/testsuite/gcc.dg/weak/weak-15.c @@ -0,0 +1,39 @@ +/* { dg-do compile } */ +/* { dg-require-weak "" } */ +/* { dg-options "-fno-common" } */ + +/* { dg-final { scan-assembler "weak\[^ \t\]*\[ \t\]_?a" } } */ +/* { dg-final { scan-assembler-not "weak\[^ \t\]*\[ \t\]_?b" } } */ +/* { dg-final { scan-assembler "weak\[^ \t\]*\[ \t\]_?c" } } */ +/* { dg-final { scan-assembler "weak\[^ \t\]*\[ \t\]_?d" } } */ + +#pragma weak a +extern char a[]; + +char *user_a(void) +{ + return a+1; +} + +int x; +int extern inline b(int y) +{ + return x+y; +} + +extern int b(int y); + +int user_b(int z) +{ + return b(z); +} + +#pragma weak c +extern int c; + +int *user_c = &c; + +#pragma weak d +extern char d[]; + +char *user_d = &d[1]; diff --git a/gcc/testsuite/gcc.dg/weak/weak-16.c b/gcc/testsuite/gcc.dg/weak/weak-16.c new file mode 100644 index 0000000..3bcf388 --- /dev/null +++ b/gcc/testsuite/gcc.dg/weak/weak-16.c @@ -0,0 +1,21 @@ +/* From PR37280. */ +/* { dg-do compile } */ +/* { dg-require-weak "" } */ +/* { dg-options "-fno-common -Os" } */ +/* { dg-final { scan-assembler "weak\[^ \t\]*\[ \t\]_?kallsyms_token_index" } } */ +/* { dg-final { scan-assembler "weak\[^ \t\]*\[ \t\]_?kallsyms_token_table" } } */ + +extern int kallsyms_token_index[] __attribute__((weak)); +extern int kallsyms_token_table[] __attribute__((weak)); +void kallsyms_expand_symbol(int *result) +{ + int len = *result; + int *tptr; + while(len) { + tptr = &kallsyms_token_table[ kallsyms_token_index[*result] ]; + len--; + while (*tptr) tptr++; + *tptr = 1; + } + *result = 0; +}