Fix redundant load of bit-fields on assignment (to get the updated
value).
 - Use extra argument to EmitStoreThroughLValue to provide place to
   write update bit-field value if caller requires it.
 - This fixes several FIXMEs.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59615 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/test/CodeGen/volatile.c b/test/CodeGen/volatile.c
index 4db4a5d..ed0a33e 100644
--- a/test/CodeGen/volatile.c
+++ b/test/CodeGen/volatile.c
@@ -1,4 +1,4 @@
-// RUN: clang -emit-llvm < %s | grep volatile | count 26
+// RUN: clang -emit-llvm < %s | grep volatile | count 25
 
 // The number 26 comes from the current codegen for volatile loads;
 // if this number changes, it's not necessarily something wrong, but
@@ -76,7 +76,7 @@
   vpF2->x=i;
   vF3.x.y=i;
   BF.x=i;
-  vBF.x=i;  // FIXME: This generates an extra volatile load
+  vBF.x=i;
   V[3]=i;
   vV[3]=i;