mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-04-11 09:40:33 +08:00
fold-const.c (maybe_lvalue_p): Return false for M(IN|AX)_EXPR.
* fold-const.c (maybe_lvalue_p): Return false for M(IN|AX)_EXPR. (extract_muldiv_1) <MINUS_EXPR>: Swap operands if necessary. * stor-layout.c (layout_type) <ARRAY_TYPE>: Do not take the maximum of the length and zero. From-SVN: r152217
This commit is contained in:
parent
464778c074
commit
ffaf6f258a
@ -1,3 +1,10 @@
|
||||
2009-09-27 Eric Botcazou <ebotcazou@adacore.com>
|
||||
|
||||
* fold-const.c (maybe_lvalue_p): Return false for M(IN|AX)_EXPR.
|
||||
(extract_muldiv_1) <MINUS_EXPR>: Swap operands if necessary.
|
||||
* stor-layout.c (layout_type) <ARRAY_TYPE>: Do not take the maximum
|
||||
of the length and zero.
|
||||
|
||||
2009-09-27 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
|
||||
|
||||
* Makefile.in (TOPLEV_H): Use $(INPUT_H) not input.h.
|
||||
|
@ -2830,8 +2830,6 @@ maybe_lvalue_p (const_tree x)
|
||||
case TARGET_EXPR:
|
||||
case COND_EXPR:
|
||||
case BIND_EXPR:
|
||||
case MIN_EXPR:
|
||||
case MAX_EXPR:
|
||||
break;
|
||||
|
||||
default:
|
||||
@ -6512,7 +6510,19 @@ extract_muldiv_1 (tree t, tree c, enum tree_code code, tree wide_type,
|
||||
/* If this was a subtraction, negate OP1 and set it to be an addition.
|
||||
This simplifies the logic below. */
|
||||
if (tcode == MINUS_EXPR)
|
||||
tcode = PLUS_EXPR, op1 = negate_expr (op1);
|
||||
{
|
||||
tcode = PLUS_EXPR, op1 = negate_expr (op1);
|
||||
/* If OP1 was not easily negatable, the constant may be OP0. */
|
||||
if (TREE_CODE (op0) == INTEGER_CST)
|
||||
{
|
||||
tree tem = op0;
|
||||
op0 = op1;
|
||||
op1 = tem;
|
||||
tem = t1;
|
||||
t1 = t2;
|
||||
t2 = tem;
|
||||
}
|
||||
}
|
||||
|
||||
if (TREE_CODE (op1) != INTEGER_CST)
|
||||
break;
|
||||
|
@ -1968,15 +1968,6 @@ layout_type (tree type)
|
||||
TREE_TYPE (lb),
|
||||
ub, lb)));
|
||||
|
||||
/* If neither bound is a constant and sizetype is signed, make
|
||||
sure the size is never negative. We should really do this
|
||||
if *either* bound is non-constant, but this is the best
|
||||
compromise between C and Ada. */
|
||||
if (!TYPE_UNSIGNED (sizetype)
|
||||
&& TREE_CODE (TYPE_MIN_VALUE (index)) != INTEGER_CST
|
||||
&& TREE_CODE (TYPE_MAX_VALUE (index)) != INTEGER_CST)
|
||||
length = size_binop (MAX_EXPR, length, size_zero_node);
|
||||
|
||||
TYPE_SIZE (type) = size_binop (MULT_EXPR, element_size,
|
||||
fold_convert (bitsizetype,
|
||||
length));
|
||||
|
Loading…
x
Reference in New Issue
Block a user