aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Henderson <rth@cygnus.com>1999-09-02 13:01:46 -0700
committerRichard Henderson <rth@gcc.gnu.org>1999-09-02 13:01:46 -0700
commit57bcb97aac8ba7f801c3ce18ef287ae9a4ac6ae9 (patch)
treedc5ca7fbf22568057834f64696baefb89b6503d6
parent773c6f00765f091ee6a69929a19cfd46d7a30c03 (diff)
downloadgcc-57bcb97aac8ba7f801c3ce18ef287ae9a4ac6ae9.zip
gcc-57bcb97aac8ba7f801c3ce18ef287ae9a4ac6ae9.tar.gz
gcc-57bcb97aac8ba7f801c3ce18ef287ae9a4ac6ae9.tar.bz2
stmt.c (expand_asm_operands): Invoke MD_ASM_CLOBBERS if present.
* stmt.c (expand_asm_operands): Invoke MD_ASM_CLOBBERS if present. * tm.texi (MD_ASM_CLOBBERS): Document it. From-SVN: r29064
-rw-r--r--gcc/ChangeLog25
-rw-r--r--gcc/stmt.c8
-rw-r--r--gcc/tm.texi5
3 files changed, 38 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 6a4fbea..e73dd7d 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,28 @@
+Thu Sep 2 13:00:48 1999 Richard Henderson <rth@cygnus.com>
+
+ * stmt.c (expand_asm_operands): Invoke MD_ASM_CLOBBERS if present.
+ * tm.texi (MD_ASM_CLOBBERS): Document it.
+
+Thu Sep 2 10:22:40 1999 Richard Henderson <rth@cygnus.com>
+
+ * dwarf2out.c (dwarf2out_line): Constify `lastfile'.
+ * except.c (expand_rethrow): Remove unused variable.
+ * expr.c (do_jump_by_parts_greater_rtx): Likewise.
+ * flow.c (replace_insns): Likewise.
+ (create_edge_list, verify_edge_list): Likewise.
+ * gcse.c (cprop_cc0_jump): Protect declaration with HAVE_cc0.
+
+ * genemit.c (gen_expand): Only emit `operands[N]' decl if there
+ is special code to run.
+ (main): Don't define operands to emit_operand.
+ * genrecog.c (main): Don't emit an empty peephole2_insn function.
+
+ * rtl.h (NOTE_BASIC_BLOCK): Use X0BBDEF.
+
+ * alpha/alpha.h (normal_memory_operand): Declare.
+ (reg_no_subreg_operand): Declare.
+ * alpha/elf.h (ASM_DECLARE_OBJECT_NAME): Use HOST_WIDE_INT_PRINT_DEC.
+
Thu Sep 2 10:19:20 1999 Richard Henderson <rth@cygnus.com>
* c-parse.in (compstmt_primary_start): New, broken out of first
diff --git a/gcc/stmt.c b/gcc/stmt.c
index 97afc4e..f0548b4 100644
--- a/gcc/stmt.c
+++ b/gcc/stmt.c
@@ -1153,6 +1153,14 @@ expand_asm_operands (string, outputs, inputs, clobbers, vol, filename, line)
return;
}
+#ifdef MD_ASM_CLOBBERS
+ /* Sometimes we wish to automatically clobber registers across an asm.
+ Case in point is when the i386 backend moved from cc0 to a hard reg --
+ maintaining source-level compatability means automatically clobbering
+ the flags register. */
+ MD_ASM_CLOBBERS (clobbers);
+#endif
+
/* Count the number of meaningful clobbered registers, ignoring what
we would ignore later. */
nclobbers = 0;
diff --git a/gcc/tm.texi b/gcc/tm.texi
index 8375908..eab7b2e 100644
--- a/gcc/tm.texi
+++ b/gcc/tm.texi
@@ -7713,6 +7713,11 @@ unit may not be bound to undefined symbols in another translation unit
without user intervention. For instance, under Microsoft Windows
symbols must be explicitly imported from shared libraries (DLLs).
+@findex MD_ASM_CLOBBERS
+@item MD_ASM_CLOBBERS
+A C statement that adds to @var{CLOBBERS} @code{STRING_CST} trees for
+any hard regs the port wishes to automatically clobber for all asms.
+
@findex ISSUE_RATE
@item ISSUE_RATE
A C expression that returns how many instructions can be issued at the