File gcc46-arm-volatile.patch of Package gcc46

diff -ruNa gcc-4.6.0-20110419.orig/gcc/expr.c gcc-4.6.0-20110419/gcc/expr.c
--- gcc-4.6.0-20110419.orig/gcc/expr.c	2011-06-08 18:07:06.295571233 +0800
+++ gcc-4.6.0-20110419/gcc/expr.c	2011-06-08 18:40:11.430635015 +0800
@@ -9179,7 +9179,8 @@
 		&& modifier != EXPAND_INITIALIZER)
 	    /* If the field is volatile, we always want an aligned
 	       access.  */
-	    || (volatilep && flag_strict_volatile_bitfields > 0)
+	    || (volatilep && flag_strict_volatile_bitfields > 0
+                && (bitpos % GET_MODE_ALIGNMENT (mode) != 0))
 	    /* If the field isn't aligned enough to fetch as a memref,
 	       fetch it as a bit field.  */
 	    || (mode1 != BLKmode
openSUSE Build Service is sponsored by