Fold arithmetic integer expressions fallout
* ldexp.c (MAX): Define. (exp_unop, exp_binop, exp_trinop): Alloc at least enough for etree_type.value.
This commit is contained in:
parent
362c0c4d9c
commit
769553e65f
2 changed files with 14 additions and 6 deletions
|
@ -1,3 +1,9 @@
|
|||
2016-10-07 Alan Modra <amodra@gmail.com>
|
||||
|
||||
* ldexp.c (MAX): Define.
|
||||
(exp_unop, exp_binop, exp_trinop): Alloc at least enough for
|
||||
etree_type.value.
|
||||
|
||||
2016-10-07 Alan Modra <amodra@gmail.com>
|
||||
|
||||
* testsuite/lib/ld-lib.exp (is_generic_elf): New, extracted from..
|
||||
|
|
14
ld/ldexp.c
14
ld/ldexp.c
|
@ -1273,11 +1273,13 @@ exp_value_fold (etree_type *tree)
|
|||
}
|
||||
}
|
||||
|
||||
#define MAX(a, b) ((a) > (b) ? (a) : (b))
|
||||
|
||||
etree_type *
|
||||
exp_binop (int code, etree_type *lhs, etree_type *rhs)
|
||||
{
|
||||
etree_type *new_e = (etree_type *) stat_alloc (sizeof (new_e->binary));
|
||||
|
||||
etree_type *new_e = (etree_type *) stat_alloc (MAX (sizeof (new_e->binary),
|
||||
sizeof (new_e->value)));
|
||||
new_e->type.node_code = code;
|
||||
new_e->type.filename = lhs->type.filename;
|
||||
new_e->type.lineno = lhs->type.lineno;
|
||||
|
@ -1296,8 +1298,8 @@ exp_binop (int code, etree_type *lhs, etree_type *rhs)
|
|||
etree_type *
|
||||
exp_trinop (int code, etree_type *cond, etree_type *lhs, etree_type *rhs)
|
||||
{
|
||||
etree_type *new_e = (etree_type *) stat_alloc (sizeof (new_e->trinary));
|
||||
|
||||
etree_type *new_e = (etree_type *) stat_alloc (MAX (sizeof (new_e->trinary),
|
||||
sizeof (new_e->value)));
|
||||
new_e->type.node_code = code;
|
||||
new_e->type.filename = cond->type.filename;
|
||||
new_e->type.lineno = cond->type.lineno;
|
||||
|
@ -1315,8 +1317,8 @@ exp_trinop (int code, etree_type *cond, etree_type *lhs, etree_type *rhs)
|
|||
etree_type *
|
||||
exp_unop (int code, etree_type *child)
|
||||
{
|
||||
etree_type *new_e = (etree_type *) stat_alloc (sizeof (new_e->unary));
|
||||
|
||||
etree_type *new_e = (etree_type *) stat_alloc (MAX (sizeof (new_e->unary),
|
||||
sizeof (new_e->value)));
|
||||
new_e->unary.type.node_code = code;
|
||||
new_e->unary.type.filename = child->type.filename;
|
||||
new_e->unary.type.lineno = child->type.lineno;
|
||||
|
|
Loading…
Add table
Reference in a new issue