re PR middle-end/64824 (ICE in gimple verification)
PR c/64824 * c-parser.c (c_parser_binary_expression): Fix OpenMP stack[sp].prec check in the POP macro. * testsuite/libgomp.c/atomic-18.c: New test. * testsuite/libgomp.c++/atomic-16.C: New test. From-SVN: r220617
This commit is contained in:
parent
c43ade8004
commit
fa01ffccc7
|
@ -1,3 +1,9 @@
|
||||||
|
2015-02-11 Jakub Jelinek <jakub@redhat.com>
|
||||||
|
|
||||||
|
PR c/64824
|
||||||
|
* c-parser.c (c_parser_binary_expression): Fix OpenMP stack[sp].prec
|
||||||
|
check in the POP macro.
|
||||||
|
|
||||||
2015-02-09 Marek Polacek <polacek@redhat.com>
|
2015-02-09 Marek Polacek <polacek@redhat.com>
|
||||||
|
|
||||||
PR c/64856
|
PR c/64856
|
||||||
|
|
|
@ -6233,8 +6233,8 @@ c_parser_binary_expression (c_parser *parser, struct c_expr *after,
|
||||||
if (__builtin_expect (omp_atomic_lhs != NULL_TREE, 0) && sp == 1 \
|
if (__builtin_expect (omp_atomic_lhs != NULL_TREE, 0) && sp == 1 \
|
||||||
&& c_parser_peek_token (parser)->type == CPP_SEMICOLON \
|
&& c_parser_peek_token (parser)->type == CPP_SEMICOLON \
|
||||||
&& ((1 << stack[sp].prec) \
|
&& ((1 << stack[sp].prec) \
|
||||||
& (1 << (PREC_BITOR | PREC_BITXOR | PREC_BITAND | PREC_SHIFT \
|
& ((1 << PREC_BITOR) | (1 << PREC_BITXOR) | (1 << PREC_BITAND) \
|
||||||
| PREC_ADD | PREC_MULT))) \
|
| (1 << PREC_SHIFT) | (1 << PREC_ADD) | (1 << PREC_MULT))) \
|
||||||
&& stack[sp].op != TRUNC_MOD_EXPR \
|
&& stack[sp].op != TRUNC_MOD_EXPR \
|
||||||
&& stack[0].expr.value != error_mark_node \
|
&& stack[0].expr.value != error_mark_node \
|
||||||
&& stack[1].expr.value != error_mark_node \
|
&& stack[1].expr.value != error_mark_node \
|
||||||
|
|
|
@ -1,3 +1,9 @@
|
||||||
|
2015-02-11 Jakub Jelinek <jakub@redhat.com>
|
||||||
|
|
||||||
|
PR c/64824
|
||||||
|
* testsuite/libgomp.c/atomic-18.c: New test.
|
||||||
|
* testsuite/libgomp.c++/atomic-16.C: New test.
|
||||||
|
|
||||||
2015-02-04 Jakub Jelinek <jakub@redhat.com>
|
2015-02-04 Jakub Jelinek <jakub@redhat.com>
|
||||||
|
|
||||||
PR c/64824
|
PR c/64824
|
||||||
|
|
|
@ -0,0 +1,5 @@
|
||||||
|
// PR c/64824
|
||||||
|
// { dg-do run }
|
||||||
|
// { dg-options "-O2 -fopenmp" }
|
||||||
|
|
||||||
|
#include "../libgomp.c/atomic-18.c"
|
|
@ -0,0 +1,61 @@
|
||||||
|
/* PR c/64824 */
|
||||||
|
/* { dg-do run } */
|
||||||
|
/* { dg-options "-O2 -fopenmp" } */
|
||||||
|
|
||||||
|
void
|
||||||
|
f1 (void)
|
||||||
|
{
|
||||||
|
short a;
|
||||||
|
short b = 1;
|
||||||
|
int c = 3;
|
||||||
|
#pragma omp atomic capture
|
||||||
|
a = b = c << b;
|
||||||
|
if (b != 6 || a != 6)
|
||||||
|
__builtin_abort ();
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
f2 (void)
|
||||||
|
{
|
||||||
|
short a;
|
||||||
|
short b = 1;
|
||||||
|
int c = 3;
|
||||||
|
#pragma omp atomic capture
|
||||||
|
a = b = c + b;
|
||||||
|
if (b != 4 || a != 4)
|
||||||
|
__builtin_abort ();
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
f3 (void)
|
||||||
|
{
|
||||||
|
short a;
|
||||||
|
short b = 1;
|
||||||
|
long long int c = 3;
|
||||||
|
#pragma omp atomic capture
|
||||||
|
a = b = c + b;
|
||||||
|
if (b != 4 || a != 4)
|
||||||
|
__builtin_abort ();
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
f4 (void)
|
||||||
|
{
|
||||||
|
char a;
|
||||||
|
char b = 1;
|
||||||
|
long long int c = 3LL;
|
||||||
|
#pragma omp atomic capture
|
||||||
|
a = b = c << b;
|
||||||
|
if (b != 6 || a != 6)
|
||||||
|
__builtin_abort ();
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
main ()
|
||||||
|
{
|
||||||
|
f1 ();
|
||||||
|
f2 ();
|
||||||
|
f3 ();
|
||||||
|
f4 ();
|
||||||
|
return 0;
|
||||||
|
}
|
Loading…
Reference in New Issue