diff options
| author | rakdver <rakdver@138bc75d-0d04-0410-961f-82ee72b054a4> | 2004-10-09 20:19:37 +0000 |
|---|---|---|
| committer | rakdver <rakdver@138bc75d-0d04-0410-961f-82ee72b054a4> | 2004-10-09 20:19:37 +0000 |
| commit | 2d05784e6f0d45637de623f81936cb19d56e35cb (patch) | |
| tree | 9e4a45afb3ae070db479c030f1165657fb8f319d | |
| parent | 7be10878f39694e05b3bd2f0c9ece6f5a1fd9928 (diff) | |
| download | ppe42-gcc-2d05784e6f0d45637de623f81936cb19d56e35cb.tar.gz ppe42-gcc-2d05784e6f0d45637de623f81936cb19d56e35cb.zip | |
PR tree-optimization/17906
* tree-tailcall.c (tree_optimize_tail_calls_1): Do not attempt to
copy non-gimple reg arguments.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@88828 138bc75d-0d04-0410-961f-82ee72b054a4
| -rw-r--r-- | gcc/ChangeLog | 6 | ||||
| -rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
| -rw-r--r-- | gcc/testsuite/gcc.c-torture/compile/pr17906.c | 7 | ||||
| -rw-r--r-- | gcc/tree-tailcall.c | 3 |
4 files changed, 20 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 1107817bc82..d2c0baeb1e3 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2004-10-09 Zdenek Dvorak <dvorakz@suse.cz> + + PR tree-optimization/17906 + * tree-tailcall.c (tree_optimize_tail_calls_1): Do not attempt to + copy non-gimple reg arguments. + 2004-10-09 Roger Sayle <roger@eyesopen.com> PR rtl-optimization/17853 diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 5fc35b8cc98..4a2c0e38eb2 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2004-10-09 Zdenek Dvorak <dvorakz@suse.cz> + + PR tree-optimization/17906 + * gcc.c-torture/compile/pr17906.c: New. + 2004-10-09 Stuart Hastings <stuart@apple.com> Roger Sayle <roger@eyesopen.com> diff --git a/gcc/testsuite/gcc.c-torture/compile/pr17906.c b/gcc/testsuite/gcc.c-torture/compile/pr17906.c new file mode 100644 index 00000000000..2b18a6aabaf --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/compile/pr17906.c @@ -0,0 +1,7 @@ +struct usc_bigstack_t {}; + +void +usc_recressive_func(int cnt, int max, struct usc_bigstack_t bstack) +{ + usc_recressive_func(cnt+1, max, bstack); +} diff --git a/gcc/tree-tailcall.c b/gcc/tree-tailcall.c index 34ac8ee5834..00fdea301ad 100644 --- a/gcc/tree-tailcall.c +++ b/gcc/tree-tailcall.c @@ -870,7 +870,8 @@ tree_optimize_tail_calls_1 (bool opt_tailcalls) for (param = DECL_ARGUMENTS (current_function_decl); param; param = TREE_CHAIN (param)) - if (var_ann (param) + if (is_gimple_reg (param) + && var_ann (param) /* Also parameters that are only defined but never used need not be copied. */ && (var_ann (param)->default_def |

