• R/O
  • HTTP
  • SSH
  • HTTPS

コミット

タグ
未設定

よく使われているワード(クリックで追加)

javac++androidlinuxc#windowsobjective-ccocoa誰得qtpythonphprubygameguibathyscaphec計画中(planning stage)翻訳omegatframeworktwitterdomtestvb.netdirectxゲームエンジンbtronarduinopreviewer

コミットメタ情報

リビジョン743d9602b2607f78d71022e989e65258f13d60c7 (tree)
日時2016-02-20 01:25:58
作者jakub <jakub@138b...>
コミッターjakub

ログメッセージ

PR middle-end/69838
* lra.c (lra_process_new_insns): If non-call exceptions are enabled,
call copy_reg_eh_region_note_forward on before and/or after sequences
and remove note from insn if it no longer can throw.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@233562 138bc75d-0d04-0410-961f-82ee72b054a4

変更サマリ

差分

--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,10 @@
11 2016-02-19 Jakub Jelinek <jakub@redhat.com>
22
3+ PR middle-end/69838
4+ * lra.c (lra_process_new_insns): If non-call exceptions are enabled,
5+ call copy_reg_eh_region_note_forward on before and/or after sequences
6+ and remove note from insn if it no longer can throw.
7+
38 PR target/69820
49 * config/i386/sse.md (VI_512): Only include V64QImode and V32HImode
510 if TARGET_AVX512BW.
--- a/gcc/lra.c
+++ b/gcc/lra.c
@@ -1742,20 +1742,29 @@ lra_process_new_insns (rtx_insn *insn, rtx_insn *before, rtx_insn *after,
17421742 }
17431743 if (before != NULL_RTX)
17441744 {
1745+ if (cfun->can_throw_non_call_exceptions)
1746+ copy_reg_eh_region_note_forward (insn, before, NULL);
17451747 emit_insn_before (before, insn);
17461748 push_insns (PREV_INSN (insn), PREV_INSN (before));
17471749 setup_sp_offset (before, PREV_INSN (insn));
17481750 }
17491751 if (after != NULL_RTX)
17501752 {
1753+ if (cfun->can_throw_non_call_exceptions)
1754+ copy_reg_eh_region_note_forward (insn, after, NULL);
17511755 for (last = after; NEXT_INSN (last) != NULL_RTX; last = NEXT_INSN (last))
17521756 ;
17531757 emit_insn_after (after, insn);
17541758 push_insns (last, insn);
17551759 setup_sp_offset (after, last);
17561760 }
1761+ if (cfun->can_throw_non_call_exceptions)
1762+ {
1763+ rtx note = find_reg_note (insn, REG_EH_REGION, NULL_RTX);
1764+ if (note && !insn_could_throw_p (insn))
1765+ remove_note (insn, note);
1766+ }
17571767 }
1758-
17591768
17601769
17611770 /* Replace all references to register OLD_REGNO in *LOC with pseudo