summaryrefslogtreecommitdiff
path: root/gcc/fold-const.c
diff options
context:
space:
mode:
authortschwinge <tschwinge@138bc75d-0d04-0410-961f-82ee72b054a4>2012-05-25 08:04:28 +0000
committertschwinge <tschwinge@138bc75d-0d04-0410-961f-82ee72b054a4>2012-05-25 08:04:28 +0000
commit5253ef2bd1fdbfefa5735ecad53f59a76c402c72 (patch)
tree295b667261e9fb754b42de6d3bcd5a834c7086eb /gcc/fold-const.c
parentfa16a29ecc70207b3284d05ab3d8c210fc4c95a6 (diff)
downloadgcc-5253ef2bd1fdbfefa5735ecad53f59a76c402c72.tar.gz
gcc/
* fold-const.c (optimize_bit_field_compare): Abort early in the strict volatile bitfields case. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@187869 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/fold-const.c')
-rw-r--r--gcc/fold-const.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/gcc/fold-const.c b/gcc/fold-const.c
index 20b07d0ad81..58deca7eb29 100644
--- a/gcc/fold-const.c
+++ b/gcc/fold-const.c
@@ -3346,6 +3346,11 @@ optimize_bit_field_compare (location_t loc, enum tree_code code,
tree mask;
tree offset;
+ /* In the strict volatile bitfields case, doing code changes here may prevent
+ other optimizations, in particular in a SLOW_BYTE_ACCESS setting. */
+ if (flag_strict_volatile_bitfields > 0)
+ return 0;
+
/* Get all the information about the extractions being done. If the bit size
if the same as the size of the underlying object, we aren't doing an
extraction at all and so can do nothing. We also don't want to