mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-03-15 22:51:38 +08:00
genmatch.c (print_operand): Fix formatting.
2015-10-09 Richard Biener <rguenther@suse.de> * genmatch.c (print_operand): Fix formatting. (dt_node::append_simplify): Warn for multiple simplifiers that match the same pattern. * match.pd (log (exp @0)): Remove duplicates. From-SVN: r228648
This commit is contained in:
parent
0c063d6032
commit
eee7b6c4a2
@ -1,3 +1,10 @@
|
||||
2015-10-09 Richard Biener <rguenther@suse.de>
|
||||
|
||||
* genmatch.c (print_operand): Fix formatting.
|
||||
(dt_node::append_simplify): Warn for multiple simplifiers
|
||||
that match the same pattern.
|
||||
* match.pd (log (exp @0)): Remove duplicates.
|
||||
|
||||
2015-10-09 Richard Biener <rguenth@suse.de>
|
||||
|
||||
PR target/67366
|
||||
|
@ -710,13 +710,9 @@ print_operand (operand *o, FILE *f = stderr, bool flattened = false)
|
||||
{
|
||||
if (capture *c = dyn_cast<capture *> (o))
|
||||
{
|
||||
fprintf (f, "@%u", c->where);
|
||||
if (c->what && flattened == false)
|
||||
{
|
||||
putc (':', f);
|
||||
print_operand (c->what, f, flattened);
|
||||
putc (' ', f);
|
||||
}
|
||||
print_operand (c->what, f, flattened);
|
||||
fprintf (f, "@%u", c->where);
|
||||
}
|
||||
|
||||
else if (predicate *p = dyn_cast<predicate *> (o))
|
||||
@ -727,18 +723,22 @@ print_operand (operand *o, FILE *f = stderr, bool flattened = false)
|
||||
|
||||
else if (expr *e = dyn_cast<expr *> (o))
|
||||
{
|
||||
fprintf (f, "(%s", e->operation->id);
|
||||
|
||||
if (flattened == false)
|
||||
if (e->ops.length () == 0)
|
||||
fprintf (f, "%s", e->operation->id);
|
||||
else
|
||||
{
|
||||
putc (' ', f);
|
||||
for (unsigned i = 0; i < e->ops.length (); ++i)
|
||||
fprintf (f, "(%s", e->operation->id);
|
||||
|
||||
if (flattened == false)
|
||||
{
|
||||
print_operand (e->ops[i], f, flattened);
|
||||
putc (' ', f);
|
||||
for (unsigned i = 0; i < e->ops.length (); ++i)
|
||||
{
|
||||
putc (' ', f);
|
||||
print_operand (e->ops[i], f, flattened);
|
||||
}
|
||||
}
|
||||
putc (')', f);
|
||||
}
|
||||
putc (')', f);
|
||||
}
|
||||
|
||||
else
|
||||
@ -1563,6 +1563,14 @@ dt_node::append_simplify (simplify *s, unsigned pattern_no,
|
||||
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");
|
||||
warning_at (s2->s->match->location, "previous pattern defined here");
|
||||
print_operand (s->match, stderr);
|
||||
fprintf (stderr, "\n");
|
||||
}
|
||||
return append_node (n);
|
||||
}
|
||||
|
||||
|
10
gcc/match.pd
10
gcc/match.pd
@ -2169,18 +2169,16 @@ along with GCC; see the file COPYING3. If not see
|
||||
(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 {
|
||||
|
Loading…
x
Reference in New Issue
Block a user