===================================================================
@@ -731,11 +731,10 @@ print_operand (operand *o, FILE *f = std
if (flattened == false)
{
- putc (' ', f);
for (unsigned i = 0; i < e->ops.length (); ++i)
{
- print_operand (e->ops[i], f, flattened);
putc (' ', f);
+ print_operand (e->ops[i], f, flattened);
}
}
putc (')', f);
@@ -1563,6 +1562,16 @@ dt_node::append_simplify (simplify *s, u
dt_operand **indexes)
{
dt_simplify *n = new dt_simplify (s, pattern_no, indexes);
+ for (unsigned i = 0; i < kids.length (); ++i)
+ if (dt_simplify *s2 = dyn_cast <dt_simplify *> (kids[i]))
+ {
+ warning_at (s->match->location, "duplicate pattern");
+ print_operand (s->match, stderr);
+ fprintf (stderr, "\n");
+ warning_at (s2->s->match->location, "previous pattern defined here");
+ print_operand (s2->s->match, stderr);
+ fprintf (stderr, "\n");
+ }
return append_node (n);
}
===================================================================
@@ -2169,18 +2181,16 @@ (define_operator_list CEXPI BUILT_IN_CEX
(mult @0 (POW @1 (negate @2))))
/* Special case, optimize logN(expN(x)) = x. */
- (for logs (LOG LOG2 LOG10)
- exps (EXP EXP2 EXP10)
+ (for logs (LOG LOG2 LOG10 LOG10)
+ exps (EXP EXP2 EXP10 POW10)
(simplify
(logs (exps @0))
@0))
/* Optimize logN(func()) for various exponential functions. We
want to determine the value "x" and the power "exponent" in
order to transform logN(x**exponent) into exponent*logN(x). */
- (for logs (LOG LOG LOG LOG
- LOG2 LOG2 LOG2 LOG2
- LOG10 LOG10 LOG10 LOG10)
- exps (EXP EXP2 EXP10 POW10)
+ (for logs (LOG LOG LOG LOG2 LOG2 LOG2 LOG10 LOG10)
+ exps (EXP2 EXP10 POW10 EXP EXP10 POW10 EXP EXP2)
(simplify
(logs (exps @0))
(with {