diff options
author | Jakub Jelinek <jakub@redhat.com> | 2004-07-21 09:39:09 +0200 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2004-07-21 09:39:09 +0200 |
commit | 1ff69cbed5f1d85cb488c915d448d7e17aa581e4 (patch) | |
tree | 157995175a8dd4c0fad8c438d8f46f05554e2f79 /gcc/testsuite | |
parent | 7448a4d2a2320ef30c5bb16771719dae87982b5b (diff) | |
download | gcc-1ff69cbed5f1d85cb488c915d448d7e17aa581e4.zip gcc-1ff69cbed5f1d85cb488c915d448d7e17aa581e4.tar.gz gcc-1ff69cbed5f1d85cb488c915d448d7e17aa581e4.tar.bz2 |
re PR middle-end/15345 ([non-unit-at-a-time] unreferenced nested inline functions not optimized away)
PR middle-end/15345
PR c/16450
* gcc.dg/torture/nested-fn-1.c: New test.
From-SVN: r84999
Diffstat (limited to 'gcc/testsuite')
-rw-r--r-- | gcc/testsuite/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/torture/nested-fn-1.c | 73 |
2 files changed, 79 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 424bfd8..5f1915d 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2004-07-21 Jakub Jelinek <jakub@redhat.com> + + PR middle-end/15345 + PR c/16450 + * gcc.dg/torture/nested-fn-1.c: New test. + 2004-07-20 H.J. Lu <hongjiu.lu@intel.com> PR target/16559 diff --git a/gcc/testsuite/gcc.dg/torture/nested-fn-1.c b/gcc/testsuite/gcc.dg/torture/nested-fn-1.c new file mode 100644 index 0000000..a396def --- /dev/null +++ b/gcc/testsuite/gcc.dg/torture/nested-fn-1.c @@ -0,0 +1,73 @@ +/* PR middle-end/15345, c/16450 */ +/* Test whether unused nested functions aren't emitted into the assembly. */ +/* { dg-do compile } */ +/* { dg-options "-g0" } */ + +int +fn1 (int x) +{ + int i = x; + inline __attribute__((always_inline)) int + should_not_appear1 (void) + { + return i; + } + return should_not_appear1 (); +} + +int +fn2 (int x) +{ + int i = x; + inline __attribute__((always_inline)) int + should_not_appear2 (void) + { + return i; + } + return x; +} + +extern void check (void *p); + +int +fn3 (int x) +{ + int i = x; + inline int + should_appear1 (void) + { + char *p = __builtin_alloca (i); + check (p); + return i; + } + return should_appear1 (); +} + +int +fn4 (int x) +{ + int i = x; + inline int + should_not_appear3 (void) + { + char *p = __builtin_alloca (i); + check (p); + return i; + } + return 0 ? should_not_appear3 () : 1; +} + +int +fn5 (int x) +{ + int i = x; + inline int + should_appear2 (void) + { + return i; + } + check (should_appear2); + return i; +} + +/* { dg-final { scan-assembler-not "should_not_appear" } } */ |