diff options
author | Richard Henderson <rth@redhat.com> | 2003-04-22 16:17:46 -0700 |
---|---|---|
committer | Richard Henderson <rth@gcc.gnu.org> | 2003-04-22 16:17:46 -0700 |
commit | 4da2eb6b9026e71f167204bc7ced622f44c70a1e (patch) | |
tree | 61fac5e9044077ae9018c6ffa6b7ab8c07fde408 /gcc/rtl.h | |
parent | c1238896d34055a41d31f4e5b6a9678759eb8500 (diff) | |
download | gcc-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.h | 8 |
1 files changed, 7 insertions, 1 deletions
@@ -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)) |