Commit bb35fdd0 by Kai Tietz Committed by Kai Tietz

branch-cost1.c: New test.

        * gcc.target/i386/branch-cost1.c: New test.
        * gcc.target/i386/branch-cost2.c: New test.
        * gcc.target/i386/branch-cost3.c: New test.
        * gcc.target/i386/branch-cost4.c: New test.

        * fold-const.c (simple_operand_p_2): Handle integral
        casts from boolean-operands.

From-SVN: r180295
parent b867358a
2011-10-21 Kai Tietz <ktietz@redhat.com>
* fold-const.c (simple_operand_p_2): Handle integral
casts from boolean-operands.
2011-10-21 Jan Hubicka <jh@suse.cz>
* cgraph.c (dump_cgraph_node): Dump alias flag.
......@@ -3695,23 +3695,23 @@ simple_operand_p (const_tree exp)
/* Subroutine for fold_truth_andor: determine if an operand is simple enough
to be evaluated unconditionally.
I addition to simple_operand_p, we assume that comparisons and logic-not
operations are simple, if their operands are simple, too. */
I addition to simple_operand_p, we assume that comparisons, conversions,
and logic-not operations are simple, if their operands are simple, too. */
static bool
simple_operand_p_2 (tree exp)
{
enum tree_code code;
/* Strip any conversions that don't change the machine mode. */
STRIP_NOPS (exp);
code = TREE_CODE (exp);
if (TREE_SIDE_EFFECTS (exp)
|| tree_could_trap_p (exp))
return false;
while (CONVERT_EXPR_P (exp))
exp = TREE_OPERAND (exp, 0);
code = TREE_CODE (exp);
if (TREE_CODE_CLASS (code) == tcc_comparison)
return (simple_operand_p (TREE_OPERAND (exp, 0))
&& simple_operand_p (TREE_OPERAND (exp, 1)));
......
2011-10-21 Kai Tietz <ktietz@redhat.com>
* gcc.target/i386/branch-cost1.c: New test.
* gcc.target/i386/branch-cost2.c: New test.
* gcc.target/i386/branch-cost3.c: New test.
* gcc.target/i386/branch-cost4.c: New test.
2011-10-20 Steve Ellcey <sje@cup.hp.com>
* gcc.dg/vect/vect-120.c: Add vect_floatint_cvt requirement.
......
/* { dg-do compile } */
/* { dg-options "-O2 -fdump-tree-gimple -mbranch-cost=0" } */
extern int doo (void);
int
foo (int a, int b)
{
if (a && b)
return doo ();
return 0;
}
/* { dg-final { scan-tree-dump-times "if " 2 "gimple" } } */
/* { dg-final { scan-tree-dump-not " & " "gimple" } } */
/* { dg-final { cleanup-tree-dump "gimple" } } */
/* { dg-do compile } */
/* { dg-options "-O2 -fdump-tree-gimple -mbranch-cost=2" } */
extern int doo (void);
int
foo (int a, int b)
{
if (a && b)
return doo ();
return 0;
}
/* { dg-final { scan-tree-dump-times "if " 1 "gimple" } } */
/* { dg-final { scan-tree-dump-times " & " 1 "gimple" } } */
/* { dg-final { cleanup-tree-dump "gimple" } } */
/* { dg-do compile } */
/* { dg-options "-O2 -fdump-tree-gimple -mbranch-cost=2" } */
extern int doo (void);
int
foo (_Bool a, _Bool b)
{
if (a && b)
return doo ();
return 0;
}
/* { dg-final { scan-tree-dump-times "if " 1 "gimple" } } */
/* { dg-final { scan-tree-dump-times " & " 1 "gimple" } } */
/* { dg-final { cleanup-tree-dump "gimple" } } */
/* { dg-do compile } */
/* { dg-options "-O2 -fdump-tree-gimple -mbranch-cost=0" } */
extern int doo (void);
int
foo (_Bool a, _Bool b)
{
if (a && b)
return doo ();
return 0;
}
/* { dg-final { scan-tree-dump-times "if " 2 "gimple" } } */
/* { dg-final { scan-tree-dump-not " & " "gimple" } } */
/* { dg-final { cleanup-tree-dump "gimple" } } */
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment