diff options
-rw-r--r-- | gcc/testsuite/gcc.dg/pr103268-1.c | 10 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/pr103268-2.c | 12 | ||||
-rw-r--r-- | gcc/tree-ssa-ccp.c | 2 |
3 files changed, 24 insertions, 0 deletions
diff --git a/gcc/testsuite/gcc.dg/pr103268-1.c b/gcc/testsuite/gcc.dg/pr103268-1.c new file mode 100644 index 0000000..6d583d5 --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr103268-1.c @@ -0,0 +1,10 @@ +/* { dg-do compile } */ +/* { dg-options "-O2" } */ + +extern int si; +long +test_types (void) +{ + unsigned int u2 = __atomic_fetch_xor (&si, 0, 5); + return u2; +} diff --git a/gcc/testsuite/gcc.dg/pr103268-2.c b/gcc/testsuite/gcc.dg/pr103268-2.c new file mode 100644 index 0000000..12283bb --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr103268-2.c @@ -0,0 +1,12 @@ +/* { dg-do compile } */ +/* { dg-options "-O2" } */ + +extern long pscc_a_2_3; +extern int pscc_a_1_4; + +void +pscc (void) +{ + pscc_a_1_4 = __sync_fetch_and_and (&pscc_a_2_3, 1); +} + diff --git a/gcc/tree-ssa-ccp.c b/gcc/tree-ssa-ccp.c index 0666dc6..18d5772 100644 --- a/gcc/tree-ssa-ccp.c +++ b/gcc/tree-ssa-ccp.c @@ -3638,6 +3638,8 @@ optimize_atomic_bit_test_and (gimple_stmt_iterator *gsip, use_stmt = use_nop_stmt; } } + else + return; if (!bit) { |