Commit 1e08df0e by Marek Polacek Committed by Marek Polacek

re PR middle-end/58809 (ICE with complex variable in OpenMP reduction clause)

	PR middle-end/58809
	* fold-const.c (fold_range_test): Return 0 if the type is not
	an integral type.
testsuite/
	* gcc.dg/gomp/pr58809.c: New test.

From-SVN: r203907
parent 67b5215c
2013-10-21 Marek Polacek <polacek@redhat.com>
PR middle-end/58809
* fold-const.c (fold_range_test): Return 0 if the type is not
an integral type.
2013-10-21 Richard Sandiford <rdsandiford@googlemail.com> 2013-10-21 Richard Sandiford <rdsandiford@googlemail.com>
* system.h: Move hwint.h include further down. * system.h: Move hwint.h include further down.
......
...@@ -4970,12 +4970,16 @@ fold_range_test (location_t loc, enum tree_code code, tree type, ...@@ -4970,12 +4970,16 @@ fold_range_test (location_t loc, enum tree_code code, tree type,
int in0_p, in1_p, in_p; int in0_p, in1_p, in_p;
tree low0, low1, low, high0, high1, high; tree low0, low1, low, high0, high1, high;
bool strict_overflow_p = false; bool strict_overflow_p = false;
tree lhs = make_range (op0, &in0_p, &low0, &high0, &strict_overflow_p); tree tem, lhs, rhs;
tree rhs = make_range (op1, &in1_p, &low1, &high1, &strict_overflow_p);
tree tem;
const char * const warnmsg = G_("assuming signed overflow does not occur " const char * const warnmsg = G_("assuming signed overflow does not occur "
"when simplifying range test"); "when simplifying range test");
if (!INTEGRAL_TYPE_P (type))
return 0;
lhs = make_range (op0, &in0_p, &low0, &high0, &strict_overflow_p);
rhs = make_range (op1, &in1_p, &low1, &high1, &strict_overflow_p);
/* If this is an OR operation, invert both sides; we will invert /* If this is an OR operation, invert both sides; we will invert
again at the end. */ again at the end. */
if (or_op) if (or_op)
......
2013-10-21 Marek Polacek <polacek@redhat.com>
PR middle-end/58809
* gcc.dg/gomp/pr58809.c: New test.
2013-10-21 Vidya Praveen <vidyapraveen@arm.com> 2013-10-21 Vidya Praveen <vidyapraveen@arm.com>
* gcc.dg/20050922-1.c: Remove stdlib.h and declare abort(). * gcc.dg/20050922-1.c: Remove stdlib.h and declare abort().
......
/* PR middle-end/58809 */
/* { dg-do compile } */
/* { dg-options "-fopenmp -O" } */
int i;
#pragma omp threadprivate (i)
void foo()
{
_Complex int j;
#pragma omp parallel copyin (i) reduction (&&:j)
;
}
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