[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