[cfe-commits] r76498 - in /cfe/trunk/lib/CodeGen: CGCXX.cpp CodeGenFunction.cpp

Fariborz Jahanian fjahanian at apple.com
Mon Jul 20 16:18:55 PDT 2009


Author: fjahanian
Date: Mon Jul 20 18:18:55 2009
New Revision: 76498

URL: http://llvm.org/viewvc/llvm-project?rev=76498&view=rev
Log:
Move EmitCtorPrologue to CGCXX. Add an assert and FIXMEs.

Modified:
    cfe/trunk/lib/CodeGen/CGCXX.cpp
    cfe/trunk/lib/CodeGen/CodeGenFunction.cpp

Modified: cfe/trunk/lib/CodeGen/CGCXX.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGCXX.cpp?rev=76498&r1=76497&r2=76498&view=diff

==============================================================================
--- cfe/trunk/lib/CodeGen/CGCXX.cpp (original)
+++ cfe/trunk/lib/CodeGen/CGCXX.cpp Mon Jul 20 18:18:55 2009
@@ -414,3 +414,36 @@
   Name += '\0';
   return UniqueMangledName(Name.begin(), Name.end());
 }
+
+/// EmitCtorPrologue - This routine generates necessary code to initialize
+/// base classes and non-static data members belonging to this constructor.
+void CodeGenFunction::EmitCtorPrologue(const CXXConstructorDecl *CD) {
+  for (CXXConstructorDecl::init_const_iterator B = CD->init_begin(), 
+       E = CD->init_end();
+       B != E; ++B) {
+    CXXBaseOrMemberInitializer *Member = (*B);
+    if (Member->isBaseInitializer()) {
+      // FIXME. Added base initialilzers here.
+      assert(false && "FIXME. base initialization unsupported");
+    }
+    else {
+      // non-static data member initilaizers.
+      FieldDecl *Field = Member->getMember();
+      QualType FieldType = getContext().getCanonicalType((Field)->getType());
+      assert(!getContext().getAsArrayType(FieldType) 
+             && "FIXME. Field arrays initialization unsupported");
+      assert(!FieldType->getAsRecordType() 
+             && "FIXME. Field class initialization unsupported");
+      llvm::Value *LoadOfThis = LoadCXXThis();
+      LValue LHS = EmitLValueForField(LoadOfThis, Field, false, 0);
+      
+      assert(Member->getNumArgs() == 1 && "Initializer count must be 1 only");
+      Expr *RhsExpr = *Member->begin();
+      llvm::Value *RHS = EmitScalarExpr(RhsExpr, true);
+      if (LHS.isBitfield())
+        EmitStoreThroughBitfieldLValue(RValue::get(RHS), LHS, FieldType, 0);
+      else
+        EmitStoreThroughLValue(RValue::get(RHS), LHS, FieldType);
+    }
+  }
+}

Modified: cfe/trunk/lib/CodeGen/CodeGenFunction.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CodeGenFunction.cpp?rev=76498&r1=76497&r2=76498&view=diff

==============================================================================
--- cfe/trunk/lib/CodeGen/CodeGenFunction.cpp (original)
+++ cfe/trunk/lib/CodeGen/CodeGenFunction.cpp Mon Jul 20 18:18:55 2009
@@ -141,39 +141,6 @@
   Ptr->eraseFromParent();
 }
 
-/// EmitCtorPrologue - This routine generates necessary code to initialize
-/// base classes and non-static data members belonging to this constructor.
-void CodeGenFunction::EmitCtorPrologue(const CXXConstructorDecl *CD) {
-  for (CXXConstructorDecl::init_const_iterator B = CD->init_begin(), 
-       E = CD->init_end();
-       B != E; ++B) {
-    CXXBaseOrMemberInitializer *Member = (*B);
-    if (Member->isBaseInitializer()) {
-      // FIXME. Added base initialilzers here.
-      ;
-    }
-    else {
-      // non-static data member initilaizers.
-      FieldDecl *Field = Member->getMember();
-      QualType FieldType = getContext().getCanonicalType((Field)->getType());
-      assert(!getContext().getAsArrayType(FieldType) 
-             && "Field arrays initialization unsupported");
-      assert(!FieldType->getAsRecordType() 
-             && "Field class initialization unsupported");
-      llvm::Value *LoadOfThis = LoadCXXThis();
-      LValue LHS = EmitLValueForField(LoadOfThis, Field, false, 0);
-      
-      assert(Member->getNumArgs() == 1 && "Initializer count must be 1 only");
-      Expr *RhsExpr = *Member->begin();
-      llvm::Value *RHS = EmitScalarExpr(RhsExpr, true);
-      if (LHS.isBitfield())
-        EmitStoreThroughBitfieldLValue(RValue::get(RHS), LHS, FieldType, 0);
-      else
-        EmitStoreThroughLValue(RValue::get(RHS), LHS, FieldType);
-    }
-  }
-}
-
 void CodeGenFunction::StartFunction(const Decl *D, QualType RetTy, 
                                     llvm::Function *Fn,
                                     const FunctionArgList &Args,





More information about the cfe-commits mailing list