explow.c (int_expr_size): New fn.

* explow.c (int_expr_size): New fn.
        * expr.c (expand_expr) [CONSTRUCTOR]: Use it.
        * expr.h: Declare it.

From-SVN: r56009
This commit is contained in:
Jason Merrill 2002-08-03 16:20:35 -04:00 committed by Jason Merrill
parent 7a9ffd82b6
commit de8920be70
4 changed files with 31 additions and 1 deletions

View File

@ -1,3 +1,9 @@
2002-08-03 Jason Merrill <jason@redhat.com>
* explow.c (int_expr_size): New fn.
* expr.c (expand_expr) [CONSTRUCTOR]: Use it.
* expr.h: Declare it.
2002-08-02 Krister Walfridsson <cato@df.lth.se>
* Makefile.in (gengtype-lex.o, gengtype-yacc.o): Add path to

View File

@ -294,6 +294,26 @@ expr_size (exp)
return expand_expr (size, NULL_RTX, TYPE_MODE (sizetype), 0);
}
/* Return a wide integer for the size in bytes of the value of EXP, or -1
if the size can vary or is larger than an integer. */
HOST_WIDE_INT
int_expr_size (exp)
tree exp;
{
tree t = (*lang_hooks.expr_size) (exp);
if (t == 0
|| TREE_CODE (t) != INTEGER_CST
|| TREE_OVERFLOW (t)
|| TREE_INT_CST_HIGH (t) != 0
/* If the result would appear negative, it's too big to represent. */
|| (HOST_WIDE_INT) TREE_INT_CST_LOW (t) < 0)
return -1;
return TREE_INT_CST_LOW (t);
}
/* Return a copy of X in which all memory references
and all constants that involve symbol refs

View File

@ -6812,7 +6812,7 @@ expand_expr (exp, target, tmode, modifier)
* TYPE_QUAL_CONST))),
0, TREE_ADDRESSABLE (exp), 1);
store_constructor (exp, target, 0, INTVAL (expr_size (exp)));
store_constructor (exp, target, 0, int_expr_size (exp));
return target;
}

View File

@ -544,6 +544,10 @@ extern unsigned int case_values_threshold PARAMS ((void));
/* Return an rtx for the size in bytes of the value of an expr. */
extern rtx expr_size PARAMS ((tree));
/* Return a wide integer for the size in bytes of the value of EXP, or -1
if the size can vary or is larger than an integer. */
extern HOST_WIDE_INT int_expr_size PARAMS ((tree));
extern rtx lookup_static_chain PARAMS ((tree));
/* Convert a stack slot address ADDR valid in function FNDECL