aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorEric Botcazou <ebotcazou@adacore.com>2018-12-21 16:09:23 +0000
committerEric Botcazou <ebotcazou@gcc.gnu.org>2018-12-21 16:09:23 +0000
commitdd9bf787d35f3d9a511e1b7c1d46e058631bb771 (patch)
tree112471151e4c1bfbf9b4e82ba5f3adb2ecd0a468 /gcc
parent4a77025b7d680c2f8d8a04c1b769d28a5897234a (diff)
downloadgcc-dd9bf787d35f3d9a511e1b7c1d46e058631bb771.zip
gcc-dd9bf787d35f3d9a511e1b7c1d46e058631bb771.tar.gz
gcc-dd9bf787d35f3d9a511e1b7c1d46e058631bb771.tar.bz2
re PR rtl-optimization/87727 (gcc.target/sparc/overflow-2.c FAILs)
PR rtl-optimization/87727 * combine.c (cant_combine_insn_p): On a LEAF_REGISTERS target, combine again moves from leaf hard registers. * final.c (final_scan_insn_1) <NOTE_INSN_INLINE_ENTRY>: Minor tweak. From-SVN: r267328
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog8
-rw-r--r--gcc/combine.c7
-rw-r--r--gcc/final.c5
3 files changed, 16 insertions, 4 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 0fc3225..98a8f47 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,11 @@
+2018-12-21 Eric Botcazou <ebotcazou@adacore.com>
+
+ PR rtl-optimization/87727
+ * combine.c (cant_combine_insn_p): On a LEAF_REGISTERS target, combine
+ again moves from leaf hard registers.
+
+ * final.c (final_scan_insn_1) <NOTE_INSN_INLINE_ENTRY>: Minor tweak.
+
2018-12-21 Jakub Jelinek <jakub@redhat.com>
PR target/88522
diff --git a/gcc/combine.c b/gcc/combine.c
index a1d6e2d..6f1a335 100644
--- a/gcc/combine.c
+++ b/gcc/combine.c
@@ -2353,7 +2353,12 @@ cant_combine_insn_p (rtx_insn *insn)
dest = SUBREG_REG (dest);
if (REG_P (src) && REG_P (dest)
&& ((HARD_REGISTER_P (src)
- && ! TEST_HARD_REG_BIT (fixed_reg_set, REGNO (src)))
+ && ! TEST_HARD_REG_BIT (fixed_reg_set, REGNO (src))
+#ifdef LEAF_REGISTERS
+ && ! LEAF_REGISTERS [REGNO (src)])
+#else
+ )
+#endif
|| (HARD_REGISTER_P (dest)
&& ! TEST_HARD_REG_BIT (fixed_reg_set, REGNO (dest))
&& targetm.class_likely_spilled_p (REGNO_REG_CLASS (REGNO (dest))))))
diff --git a/gcc/final.c b/gcc/final.c
index 4233181..a2993f0 100644
--- a/gcc/final.c
+++ b/gcc/final.c
@@ -2430,10 +2430,9 @@ final_scan_insn_1 (rtx_insn *insn, FILE *file, int optimize_p ATTRIBUTE_UNUSED,
case NOTE_INSN_INLINE_ENTRY:
gcc_checking_assert (cfun->debug_nonbind_markers);
- if (!DECL_IGNORED_P (current_function_decl))
+ if (!DECL_IGNORED_P (current_function_decl)
+ && notice_source_line (insn, NULL))
{
- if (!notice_source_line (insn, NULL))
- break;
(*debug_hooks->inline_entry) (LOCATION_BLOCK
(NOTE_MARKER_LOCATION (insn)));
goto output_source_line;