diff options
author | Eric Botcazou <ebotcazou@adacore.com> | 2012-05-12 21:35:37 +0000 |
---|---|---|
committer | Eric Botcazou <ebotcazou@adacore.com> | 2012-05-12 21:35:37 +0000 |
commit | 66a736b07cb9dc4ad1e827939b794490df957d42 (patch) | |
tree | 1e2f7f7fa85efcdd3543f687f7985306339dea16 /gcc/function.c | |
parent | d73482f3b81d79e9376b196b030a2e87cbaff2dd (diff) |
* function.c (requires_stack_frame_p): If the function can throw
non-call exceptions, return true if the insn can throw internally.
git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@187429 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/function.c')
-rw-r--r-- | gcc/function.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/gcc/function.c b/gcc/function.c index b5e9011ce23..00c55a16a62 100644 --- a/gcc/function.c +++ b/gcc/function.c @@ -5316,6 +5316,10 @@ requires_stack_frame_p (rtx insn, HARD_REG_SET prologue_used, if (CALL_P (insn)) return !SIBLING_CALL_P (insn); + /* We need a frame to get the unique CFA expected by the unwinder. */ + if (cfun->can_throw_non_call_exceptions && can_throw_internal (insn)) + return true; + CLEAR_HARD_REG_SET (hardregs); for (df_rec = DF_INSN_DEFS (insn); *df_rec; df_rec++) { |