diff options
author | Jeffrey D. Oldham <oldham@codesourcery.com> | 2004-09-17 21:55:02 +0000 |
---|---|---|
committer | Zack Weinberg <zack@gcc.gnu.org> | 2004-09-17 21:55:02 +0000 |
commit | 6615c446157600e6dbe0b716f48e80a64e49807f (patch) | |
tree | b888315cd5fd9c69beb9093c01225e1f84fa5bf1 /gcc/expr.c | |
parent | ade229823345594457019992b95c57221087554e (diff) | |
download | gcc-6615c446157600e6dbe0b716f48e80a64e49807f.zip gcc-6615c446157600e6dbe0b716f48e80a64e49807f.tar.gz gcc-6615c446157600e6dbe0b716f48e80a64e49807f.tar.bz2 |
alias.c (find_base_decl): Remove unreachable case '3' block.
2004-09-17 Jeffrey D. Oldham <oldham@codesourcery.com>
Zack Weinberg <zack@codesourcery.com>
* alias.c (find_base_decl): Remove unreachable case '3' block.
* expr.c (safe_from_p): Abort if passed a type.
* tree-gimple.c (recalculate_side_effects): Abort if passed
anything other than an expression.
* tree-ssa-pre.c (phi_translate): Return expr immediately if
is_gimple_min_invariant is true for it. Reorder cases for clarity.
Abort on un-handled tree classes.
(valid_in_set): Likewise.
* tree.c (tree_code_class_strings): New static data.
* tree.h (enum tree_code_class): New.
(tree_code_class_strings): Declare.
(TREE_CODE_CLASS_STRING, EXCEPTIONAL_CLASS_P, CONSTANT_CLASS_P)
(REFERENCE_CLASS_P, COMPARISON_CLASS_P, UNARY_CLASS_P, BINARY_CLASS_P)
(STATEMENT_CLASS_P, EXPRESSION_CLASS_P, IS_TYPE_OR_DECL_P): New macros.
(TYPE_P, DECL_P, IS_NON_TYPE_CODE_CLASS, IS_EXPR_CODE_CLASS)
(checking macros, EXPR_LOCATION, SET_EXPR_LOCATION, EXPR_LOCUS): Update.
* tree.def, c-common.def, objc/objc-tree.def: Use
tree_code_class enumeration constants instead of code letters.
* alias.c, builtins.c, c-common.c, c-format.c, c-lang.c, c-pragma.c
* c-typeck.c, cgraphunit.c, convert.c, dbxout.c, dwarf2out.c
* emit-rtl.c expr.c, fold-const.c, gimplify.c, lambda-code.c
* langhooks.c, langhooks.h, predict.c, print-tree.c, reload1.c, stmt.c
* tree-browser.c, tree-cfg.c, tree-chrec.c, tree-complex.c, tree-dfa.c
* tree-dump.c, tree-eh.c, tree-gimple.c, tree-inline.c, tree-nested.c
* tree-outof-ssa.c, tree-pretty-print.c, tree-sra.c, tree-ssa-ccp.c
* tree-ssa-dce.c, tree-ssa-dom.c, tree-ssa-forwprop.c, tree-ssa-live.c
* tree-ssa-loop-im.c, tree-ssa-loop-ivopts.c, tree-ssa-operands.c
* tree-ssa-phiopt.c, tree-ssa-pre.c, tree-ssa-propagate.c
* tree-ssa.c, tree-ssanames.c, tree-tailcall.c, tree.c, varasm.c
* config/sol2-c.c, config/arm/arm.c, config/i386/winnt.c
* config/pa/pa.c, config/pa/pa.h, config/sh/sh.c, objc/objc-lang.c
Update to match.
* LANGUAGES: Add note about change.
ada:
* ada-tree.def: Use tree_code_class enumeration constants
instead of code letters.
* ada-tree.h, decl.c, misc.c, trans.c, utils.c, utils2.c:
Update for new tree-class enumeration constants.
cp:
* cp-tree.def: Use tree_code_class enumeration constants
instead of code letters.
* call.c, class.c, cp-gimplify.c, cp-lang.c, cxx-pretty-print.c
* mangle.c, pt.c, semantics.c, tree.c, typeck.c:
Update for new tree-class enumeration constants.
fortran:
* f95-lang.c, trans-expr.c, trans.c: Update for new tree-class
enumeration constants.
java:
* java-tree.def: Use tree_code_class enumeration constants
instead of code letters.
* java-gimplify.c, jcf-write.c, lang.c, parse.y: Update for
new tree-class enumeration constants.
treelang:
* treetree.c: Update for new tree-class enumeration constants.
From-SVN: r87675
Diffstat (limited to 'gcc/expr.c')
-rw-r--r-- | gcc/expr.c | 34 |
1 files changed, 20 insertions, 14 deletions
@@ -3527,7 +3527,7 @@ expand_assignment (tree to, tree from, int want_value) src = from; STRIP_NOPS (src); if (TREE_CODE (TREE_TYPE (src)) != INTEGER_TYPE - || TREE_CODE_CLASS (TREE_CODE (src)) != '2') + || !BINARY_CLASS_P (src)) break; op0 = TREE_OPERAND (src, 0); @@ -5755,14 +5755,14 @@ safe_from_p (rtx x, tree exp, int top_p) /* Now look at our tree code and possibly recurse. */ switch (TREE_CODE_CLASS (TREE_CODE (exp))) { - case 'd': + case tcc_declaration: exp_rtl = DECL_RTL_IF_SET (exp); break; - case 'c': + case tcc_constant: return 1; - case 'x': + case tcc_exceptional: if (TREE_CODE (exp) == TREE_LIST) { while (1) @@ -5781,7 +5781,7 @@ safe_from_p (rtx x, tree exp, int top_p) else return 0; - case 's': + case tcc_statement: /* The only case we look at here is the DECL_INITIAL inside a DECL_EXPR. */ return (TREE_CODE (exp) != DECL_EXPR @@ -5789,17 +5789,17 @@ safe_from_p (rtx x, tree exp, int top_p) || !DECL_INITIAL (DECL_EXPR_DECL (exp)) || safe_from_p (x, DECL_INITIAL (DECL_EXPR_DECL (exp)), 0)); - case '2': - case '<': + case tcc_binary: + case tcc_comparison: if (!safe_from_p (x, TREE_OPERAND (exp, 1), 0)) return 0; /* Fall through. */ - case '1': + case tcc_unary: return safe_from_p (x, TREE_OPERAND (exp, 0), 0); - case 'e': - case 'r': + case tcc_expression: + case tcc_reference: /* Now do code-specific tests. EXP_RTL is set to any rtx we find in the expression. If it is set, we conflict iff we are that rtx or both are in memory. Otherwise, we check all operands of the @@ -5872,6 +5872,11 @@ safe_from_p (rtx x, tree exp, int top_p) >= (unsigned int) LAST_AND_UNUSED_TREE_CODE && !lang_hooks.safe_from_p (x, exp)) return 0; + break; + + case tcc_type: + /* Should never get a type here. */ + gcc_unreachable (); } /* If we have an rtl, find any enclosed object. Then see if we conflict @@ -6068,7 +6073,7 @@ expand_expr_addr_expr_1 (tree exp, rtx target, enum machine_mode tmode, generating ADDR_EXPR of something that isn't an LVALUE. The only exception here is STRING_CST. */ if (TREE_CODE (exp) == CONSTRUCTOR - || TREE_CODE_CLASS (TREE_CODE (exp)) == 'c') + || CONSTANT_CLASS_P (exp)) return XEXP (output_constant_def (exp, 0), 0); /* Everything must be something allowed by is_gimple_addressable. */ @@ -6400,12 +6405,13 @@ expand_expr_real_1 (tree exp, rtx target, enum machine_mode tmode, return const0_rtx; } - if (TREE_CODE_CLASS (code) == '1' || code == COMPONENT_REF - || code == INDIRECT_REF) + if (TREE_CODE_CLASS (code) == tcc_unary + || code == COMPONENT_REF || code == INDIRECT_REF) return expand_expr (TREE_OPERAND (exp, 0), const0_rtx, VOIDmode, modifier); - else if (TREE_CODE_CLASS (code) == '2' || TREE_CODE_CLASS (code) == '<' + else if (TREE_CODE_CLASS (code) == tcc_binary + || TREE_CODE_CLASS (code) == tcc_comparison || code == ARRAY_REF || code == ARRAY_RANGE_REF) { expand_expr (TREE_OPERAND (exp, 0), const0_rtx, VOIDmode, modifier); |