match.pd: When combining divisions exclude the degenerate case involving INT_MIN from...

2014-12-02  Richard Biener  <rguenther@suse.de>

	* match.pd: When combining divisions exclude the degenerate
	case involving INT_MIN from overflow handling.

	* gcc.dg/torture/20141202-1.c: New testcase.

From-SVN: r218269
This commit is contained in:
Richard Biener 2014-12-02 13:09:13 +00:00 committed by Richard Biener
parent 88936a2bfd
commit ac19a30334
4 changed files with 27 additions and 1 deletions

View File

@ -1,3 +1,8 @@
2014-12-02 Richard Biener <rguenther@suse.de>
* match.pd: When combining divisions exclude the degenerate
case involving INT_MIN from overflow handling.
2014-12-02 Wilco Dijkstra <wilco.dijkstra@arm.com> 2014-12-02 Wilco Dijkstra <wilco.dijkstra@arm.com>
* ira-costs.c (scan_one_insn): Improve spill cost adjustment. * ira-costs.c (scan_one_insn): Improve spill cost adjustment.

View File

@ -140,7 +140,9 @@ along with GCC; see the file COPYING3. If not see
} }
(if (!overflow_p) (if (!overflow_p)
(div @0 { wide_int_to_tree (type, mul); })) (div @0 { wide_int_to_tree (type, mul); }))
(if (overflow_p) (if (overflow_p
&& (TYPE_UNSIGNED (type)
|| mul != wi::min_value (TYPE_PRECISION (type), SIGNED)))
{ build_zero_cst (type); })))) { build_zero_cst (type); }))))
/* Optimize A / A to 1.0 if we don't care about /* Optimize A / A to 1.0 if we don't care about

View File

@ -1,3 +1,7 @@
2014-12-02 Richard Biener <rguenther@suse.de>
* gcc.dg/torture/20141202-1.c: New testcase.
2014-12-02 H.J. Lu <hongjiu.lu@intel.com> 2014-12-02 H.J. Lu <hongjiu.lu@intel.com>
PR ipa/63814 PR ipa/63814

View File

@ -0,0 +1,15 @@
/* { dg-do run } */
extern void abort (void);
int foo (int x)
{
return (x / 2) / ((-__INT_MAX__ - 1) / -2);
}
int main()
{
if (foo (- __INT_MAX__ - 1) != -1)
abort ();
return 0;
}