diff options
author | Dale Johannesen <dalej@apple.com> | 2005-03-30 20:21:37 +0000 |
---|---|---|
committer | Dale Johannesen <dalej@gcc.gnu.org> | 2005-03-30 20:21:37 +0000 |
commit | 63579539f1ba8e2985327e52965906f09d6f0e36 (patch) | |
tree | dd64ef4e28c90879ca44da928504b00c70604195 /gcc | |
parent | 86472dc31700e9fc684a27fcee2dc743c9d1216f (diff) | |
download | gcc-63579539f1ba8e2985327e52965906f09d6f0e36.zip gcc-63579539f1ba8e2985327e52965906f09d6f0e36.tar.gz gcc-63579539f1ba8e2985327e52965906f09d6f0e36.tar.bz2 |
re PR middle-end/19225 (g++.dg/eh/omit-frame-pointer2.C fails with -fpic/-fPIC on i686-pc-linux-gnu)
2005-03-30 Dale Johannesen <dalej@apple.com>
PR middle-end/19225
* calls.c (expand_call): Flush pending deferrals before
throwing call.
From-SVN: r97277
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/calls.c | 6 |
2 files changed, 11 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index f65e3f9..1d20452 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2005-03-30 Dale Johannesen <dalej@apple.com> + + PR middle-end/19225 + * calls.c (expand_call): Flush pending deferrals before + throwing call. + 2005-03-30 Joseph S. Myers <joseph@codesourcery.com> PR c/772 diff --git a/gcc/calls.c b/gcc/calls.c index 54307bf..3eb16c0 100644 --- a/gcc/calls.c +++ b/gcc/calls.c @@ -2261,10 +2261,14 @@ expand_call (tree exp, rtx target, int ignore) Also, do all pending adjustments now if there is any chance this might be a call to alloca or if we are expanding a sibling call sequence or if we are calling a function that is to return - with stack pointer depressed. */ + with stack pointer depressed. + Also do the adjustments before a throwing call, otherwise + exception handling can fail; PR 19225. */ if (pending_stack_adjust >= 32 || (pending_stack_adjust > 0 && (flags & (ECF_MAY_BE_ALLOCA | ECF_SP_DEPRESSED))) + || (pending_stack_adjust > 0 + && flag_exceptions && !(flags & ECF_NOTHROW)) || pass == 0) do_pending_stack_adjust (); |