aboutsummaryrefslogtreecommitdiff
path: root/gcc/rtl.h
diff options
context:
space:
mode:
authorRichard Henderson <rth@redhat.com>2003-04-22 16:17:46 -0700
committerRichard Henderson <rth@gcc.gnu.org>2003-04-22 16:17:46 -0700
commit4da2eb6b9026e71f167204bc7ced622f44c70a1e (patch)
tree61fac5e9044077ae9018c6ffa6b7ab8c07fde408 /gcc/rtl.h
parentc1238896d34055a41d31f4e5b6a9678759eb8500 (diff)
downloadgcc-4da2eb6b9026e71f167204bc7ced622f44c70a1e.zip
gcc-4da2eb6b9026e71f167204bc7ced622f44c70a1e.tar.gz
gcc-4da2eb6b9026e71f167204bc7ced622f44c70a1e.tar.bz2
re PR middle-end/8866 (Bug in switch statement code generation -- missing label)
PR 8866 * rtl.h (MEM_NOTRAP_P): New. (MEM_COPY_ATTRIBUTES): Copy it. * rtlanal.c (may_trap_p): Check it. * expr.c (do_tablejump): Set it. * doc/rtl.texi (Flags): Document it. * cfgrtl.c (try_redirect_by_replacing_jump): Revert last three changes. From-SVN: r65967
Diffstat (limited to 'gcc/rtl.h')
-rw-r--r--gcc/rtl.h8
1 files changed, 7 insertions, 1 deletions
diff --git a/gcc/rtl.h b/gcc/rtl.h
index acd7243..517dd28 100644
--- a/gcc/rtl.h
+++ b/gcc/rtl.h
@@ -150,7 +150,8 @@ struct rtx_def GTY((chain_next ("RTX_NEXT (&%h)"),
1 in a SET that is for a return.
In a CODE_LABEL, part of the two-bit alternate entry field. */
unsigned int jump : 1;
- /* In a CODE_LABEL, part of the two-bit alternate entry field. */
+ /* In a CODE_LABEL, part of the two-bit alternate entry field.
+ 1 in a MEM if it cannot trap. */
unsigned int call : 1;
/* 1 in a REG, MEM, or CONCAT if the value is set at most once, anywhere.
1 in a SUBREG if it references an unsigned object whose mode has been
@@ -1109,6 +1110,10 @@ do { \
#define MEM_SCALAR_P(RTX) \
(RTL_FLAG_CHECK1("MEM_SCALAR_P", (RTX), MEM)->frame_related)
+/* 1 if RTX is a mem that cannot trap. */
+#define MEM_NOTRAP_P(RTX) \
+ (RTL_FLAG_CHECK1("MEM_NOTRAP_P", (RTX), MEM)->call)
+
/* If VAL is nonzero, set MEM_IN_STRUCT_P and clear MEM_SCALAR_P in
RTX. Otherwise, vice versa. Use this macro only when you are
*sure* that you know that the MEM is in a structure, or is a
@@ -1178,6 +1183,7 @@ do { \
(MEM_VOLATILE_P (LHS) = MEM_VOLATILE_P (RHS), \
MEM_IN_STRUCT_P (LHS) = MEM_IN_STRUCT_P (RHS), \
MEM_SCALAR_P (LHS) = MEM_SCALAR_P (RHS), \
+ MEM_NOTRAP_P (LHS) = MEM_NOTRAP_P (RHS), \
RTX_UNCHANGING_P (LHS) = RTX_UNCHANGING_P (RHS), \
MEM_KEEP_ALIAS_SET_P (LHS) = MEM_KEEP_ALIAS_SET_P (RHS), \
MEM_ATTRS (LHS) = MEM_ATTRS (RHS))