aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorUros Bizjak <ubizjak@gmail.com>2013-07-22 10:27:25 +0200
committerIain Sandoe <iains@gcc.gnu.org>2013-07-22 08:27:25 +0000
commitd9e7115468531638db9a695eafa9b0fa48b1fa43 (patch)
tree16e2a6558ebb083aedd0c3e45e06acb7997215dd /gcc
parentb2b0bf396e58c8431a4a8cee5998ce6cbd1606a1 (diff)
downloadgcc-d9e7115468531638db9a695eafa9b0fa48b1fa43.zip
gcc-d9e7115468531638db9a695eafa9b0fa48b1fa43.tar.gz
gcc-d9e7115468531638db9a695eafa9b0fa48b1fa43.tar.bz2
i386.md (nonlocal_goto_receiver): Delete insn if it is not needed after split.
gcc/ 2013-07-22 Uros Bizjak <ubizjak@gmail.com> * config/i386/i386.md (nonlocal_goto_receiver): Delete insn if it is not needed after split. From-SVN: r201118
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/config/i386/i386.md11
2 files changed, 10 insertions, 6 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 87c07ba..f0260dd 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2013-07-22 Uros Bizjak <ubizjak@gmail.com>
+
+ * config/i386/i386.md (nonlocal_goto_receiver): Delete insn if
+ it is not needed after split.
+
2013-07-20 Iain Sandoe <iain@codesourcery.com>
PR target/51784
diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md
index a4778fe..c67ed31 100644
--- a/gcc/config/i386/i386.md
+++ b/gcc/config/i386/i386.md
@@ -16233,12 +16233,7 @@
(define_insn_and_split "nonlocal_goto_receiver"
[(unspec_volatile [(const_int 0)] UNSPECV_NLGR)]
"TARGET_MACHO && !TARGET_64BIT && flag_pic"
-{
- if (crtl->uses_pic_offset_table)
- return "#";
- else
- return ""; /* No pic reg restore needed. */
-}
+ "#"
"&& reload_completed"
[(const_int 0)]
{
@@ -16258,6 +16253,10 @@
xops[2] = gen_rtx_CONST (Pmode, tmp);
ix86_expand_binary_operator (MINUS, SImode, xops);
}
+ else
+ /* No pic reg restore needed. */
+ emit_note (NOTE_INSN_DELETED);
+
DONE;
})