re PR middle-end/53992 (Combining -fopenmp and -fgnu-tm results in segfault or misbehaving binaries)

gcc/
2012-08-20  Patrick Marlier  <patrick.marlier@gmail.com>

	PR middle-end/53992
	* omp-low.c (lower_omp_1): Handle GIMPLE_TRANSACTION.

testsuite/
2012-08-20  Patrick Marlier  <patrick.marlier@gmail.com>

	PR middle-end/53992
	* gcc.dg/gomp/pr53992.c: New test.

From-SVN: r190536
This commit is contained in:
Patrick Marlier 2012-08-20 16:22:17 +00:00 committed by Patrick Marlier
parent e3b3505750
commit d88513eaf7
4 changed files with 34 additions and 0 deletions

View File

@ -1,3 +1,8 @@
2012-08-20 Patrick Marlier <patrick.marlier@gmail.com>
PR middle-end/53992
* omp-low.c (lower_omp_1): Handle GIMPLE_TRANSACTION.
2012-08-20 Richard Earnshaw <rearnsha@arm.com>
PR tree-ssa/54295

View File

@ -6827,6 +6827,9 @@ lower_omp_1 (gimple_stmt_iterator *gsi_p, omp_context *ctx)
lower_omp (gimple_try_eval_ptr (stmt), ctx);
lower_omp (gimple_try_cleanup_ptr (stmt), ctx);
break;
case GIMPLE_TRANSACTION:
lower_omp (gimple_transaction_body_ptr (stmt), ctx);
break;
case GIMPLE_BIND:
lower_omp (gimple_bind_body_ptr (stmt), ctx);
break;

View File

@ -1,3 +1,8 @@
2012-08-20 Patrick Marlier <patrick.marlier@gmail.com>
PR middle-end/53992
* gcc.dg/gomp/pr53992.c: New test.
2012-08-20 Richard Earnshaw <rearnsha@arm.com>
PR tree-ssa/54295

View File

@ -0,0 +1,21 @@
/* PR middle-end/53992 */
/* { dg-do compile } */
/* { dg-options "-fgnu-tm -fopenmp" } */
/* { dg-require-effective-target fgnu_tm } */
int main() {
long data[10000];
long i, min=10000;
for (i=0; i<10000; i++) data[i] = -i;
#pragma omp parallel for
for (i=0; i<10000; i++) {
__transaction_atomic
{
if (data[i] < min)
min = data[i];
}
}
return !(min == -9999);
}