Commit 427e6a14 by Jakub Jelinek Committed by Jakub Jelinek

re PR middle-end/58385 (likely wrong code bug)

	PR tree-optimization/58385
	* fold-const.c (build_range_check): If both low and high are NULL,
	use omit_one_operand_loc to preserve exp side-effects.

	* gcc.c-torture/execute/pr58385.c: New test.

From-SVN: r202494
parent df45c0cc
2013-09-11 Jakub Jelinek <jakub@redhat.com>
PR tree-optimization/58385
* fold-const.c (build_range_check): If both low and high are NULL,
use omit_one_operand_loc to preserve exp side-effects.
2013-09-11 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
* config/arm/arm.md (arm_shiftsi3): New alternative l/l/M.
......
......@@ -4299,7 +4299,7 @@ build_range_check (location_t loc, tree type, tree exp, int in_p,
}
if (low == 0 && high == 0)
return build_int_cst (type, 1);
return omit_one_operand_loc (loc, type, build_int_cst (type, 1), exp);
if (low == 0)
return fold_build2_loc (loc, LE_EXPR, type, exp,
......
2013-09-11 Jakub Jelinek <jakub@redhat.com>
PR tree-optimization/58385
* gcc.c-torture/execute/pr58385.c: New test.
2013-09-11 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
* gcc.target/arm/thumb-ifcvt-2.c: New test.
......
/* PR tree-optimization/58385 */
extern void abort (void);
int a, b = 1;
int
foo ()
{
b = 0;
return 0;
}
int
main ()
{
((0 || a) & foo () >= 0) <= 1 && 1;
if (b)
abort ();
return 0;
}
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