diff --git a/lib/CodeGen/CGExpr.cpp b/lib/CodeGen/CGExpr.cpp
index 1d686be..f0eec03 100644
--- a/lib/CodeGen/CGExpr.cpp
+++ b/lib/CodeGen/CGExpr.cpp
@@ -635,11 +635,9 @@
     // Simple scalar l-value.
     //
     // FIXME: We shouldn't have to use isSingleValueType here.
-    //
-    // FIXME: Pass alignment!
     if (EltTy->isSingleValueType())
       return RValue::get(EmitLoadOfScalar(Ptr, LV.isVolatileQualified(),
-                                          /*Alignment=*/0, ExprType));
+                                          LV.getAlignment(), ExprType));
 
     assert(ExprType->isFunctionType() && "Unknown scalar value");
     return RValue::get(Ptr);
@@ -849,9 +847,8 @@
   }
 
   assert(Src.isScalar() && "Can't emit an agg store with this method");
-  // FIXME: Pass alignment.
   EmitStoreOfScalar(Src.getScalarVal(), Dst.getAddress(),
-                    Dst.isVolatileQualified(), /*Alignment=*/0, Ty);
+                    Dst.isVolatileQualified(), Dst.getAlignment(), Ty);
 }
 
 void CodeGenFunction::EmitStoreThroughBitfieldLValue(RValue Src, LValue Dst,
diff --git a/lib/CodeGen/CGValue.h b/lib/CodeGen/CGValue.h
index 917a194..a1bd193 100644
--- a/lib/CodeGen/CGValue.h
+++ b/lib/CodeGen/CGValue.h
@@ -136,6 +136,9 @@
   // 'const' is unused here
   Qualifiers Quals;
 
+  /// The alignment to use when accessing this lvalue.
+  unsigned char Alignment;
+
   // objective-c's ivar
   bool Ivar:1;
   
@@ -154,11 +157,12 @@
 
   Expr *BaseIvarExp;
 private:
-  void Initialize(Qualifiers Quals) {
+  void Initialize(Qualifiers Quals, unsigned Alignment = 0) {
     this->Quals = Quals;
-    
-    // FIXME: Convenient place to set objc flags to 0. This should really be
-    // done in a user-defined constructor instead.
+    this->Alignment = Alignment;
+    assert(this->Alignment == Alignment && "Alignment exceeds allowed max!");
+
+    // Initialize Objective-C flags.
     this->Ivar = this->ObjIsArray = this->NonGC = this->GlobalObjCRef = false;
     this->ThreadLocalRef = false;
     this->BaseIvarExp = 0;
@@ -191,6 +195,8 @@
 
   unsigned getAddressSpace() const { return Quals.getAddressSpace(); }
 
+  unsigned getAlignment() const { return Alignment; }
+
   static void SetObjCIvar(LValue& R, bool iValue) {
     R.Ivar = iValue;
   }
@@ -243,11 +249,12 @@
     return KVCRefExpr;
   }
 
-  static LValue MakeAddr(llvm::Value *V, Qualifiers Quals) {
+  static LValue MakeAddr(llvm::Value *V, Qualifiers Quals,
+                         unsigned Alignment = 0) {
     LValue R;
     R.LVType = Simple;
     R.V = V;
-    R.Initialize(Quals);
+    R.Initialize(Quals, Alignment);
     return R;
   }
 
