[cfe-commits] r120884 - in /cfe/trunk/lib/CodeGen: CGExpr.cpp CGExprAgg.cpp CGExprCXX.cpp CGExprComplex.cpp CGExprScalar.cpp CGObjC.cpp CGValue.h CodeGenFunction.h

jahanian fjahanian at apple.com
Sat Dec 4 11:21:48 PST 2010


I am seeing these failures:

********************
Testing Time: 105.79s
********************
Failing Tests (15):
    Clang :: CodeGenCXX/PR5050-constructor-conversion.cpp
    Clang :: CodeGenCXX/array-construction.cpp
    Clang :: CodeGenCXX/array-operator-delete-call.cpp
    Clang :: CodeGenCXX/cast-conversion.cpp
    Clang :: CodeGenCXX/constructor-conversion.cpp
    Clang :: CodeGenCXX/constructor-default-arg.cpp
    Clang :: CodeGenCXX/constructor-for-array-members.cpp
    Clang :: CodeGenCXX/convert-to-fptr.cpp
    Clang :: CodeGenCXX/decl-ref-init.cpp
    Clang :: CodeGenCXX/default-constructor-for-members.cpp
    Clang :: CodeGenCXX/derived-to-base-conv.cpp
    Clang :: CodeGenCXX/ptr-to-member-function.cpp
    Clang :: CodeGenObjC/objc-read-weak-byref.m
    Clang :: CodeGenObjC/objc2-weak-block-call.m
    Clang :: Driver/hello.c

  Expected Passes    : 2659
  Expected Failures  : 22
  Unexpected Failures: 15

- Fariborz

On Dec 3, 2010, at 6:32 PM, John McCall wrote:

> Author: rjmccall
> Date: Fri Dec  3 20:32:38 2010
> New Revision: 120884
> 
> URL: http://llvm.org/viewvc/llvm-project?rev=120884&view=rev
> Log:
> Kill the KVC l-value kind and calculate the base expression when emitting
> the l-value.
> 
> 
> Modified:
>    cfe/trunk/lib/CodeGen/CGExpr.cpp
>    cfe/trunk/lib/CodeGen/CGExprAgg.cpp
>    cfe/trunk/lib/CodeGen/CGExprCXX.cpp
>    cfe/trunk/lib/CodeGen/CGExprComplex.cpp
>    cfe/trunk/lib/CodeGen/CGExprScalar.cpp
>    cfe/trunk/lib/CodeGen/CGObjC.cpp
>    cfe/trunk/lib/CodeGen/CGValue.h
>    cfe/trunk/lib/CodeGen/CodeGenFunction.h
> 
> Modified: cfe/trunk/lib/CodeGen/CGExpr.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGExpr.cpp?rev=120884&r1=120883&r2=120884&view=diff
> ==============================================================================
> --- cfe/trunk/lib/CodeGen/CGExpr.cpp (original)
> +++ cfe/trunk/lib/CodeGen/CGExpr.cpp Fri Dec  3 20:32:38 2010
> @@ -195,11 +195,9 @@
>   if (E->isLValue()) {
>     // Emit the expression as an lvalue.
>     LValue LV = CGF.EmitLValue(E);
> -    if (LV.isPropertyRef() || LV.isKVCRef()) {
> +    if (LV.isPropertyRef()) {
>       QualType QT = E->getType();
> -      RValue RV = 
> -        LV.isPropertyRef() ? CGF.EmitLoadOfPropertyRefLValue(LV, QT) 
> -                           : CGF.EmitLoadOfKVCRefLValue(LV, QT);
> +      RValue RV = CGF.EmitLoadOfPropertyRefLValue(LV);
>       assert(RV.isScalar() && "EmitExprForReferenceBinding");
>       return RV.getScalarVal();
>     }
> @@ -671,11 +669,8 @@
>   if (LV.isBitField())
>     return EmitLoadOfBitfieldLValue(LV, ExprType);
> 
> -  if (LV.isPropertyRef())
> -    return EmitLoadOfPropertyRefLValue(LV, ExprType);
> -
> -  assert(LV.isKVCRef() && "Unknown LValue type!");
> -  return EmitLoadOfKVCRefLValue(LV, ExprType);
> +  assert(LV.isPropertyRef() && "Unknown LValue type!");
> +  return EmitLoadOfPropertyRefLValue(LV);
> }
> 
> RValue CodeGenFunction::EmitLoadOfBitfieldLValue(LValue LV,
> @@ -750,16 +745,6 @@
>   return RValue::get(Res);
> }
> 
> -RValue CodeGenFunction::EmitLoadOfPropertyRefLValue(LValue LV,
> -                                                    QualType ExprType) {
> -  return EmitObjCPropertyGet(LV.getPropertyRefExpr());
> -}
> -
> -RValue CodeGenFunction::EmitLoadOfKVCRefLValue(LValue LV,
> -                                               QualType ExprType) {
> -  return EmitObjCPropertyGet(LV.getKVCRefExpr());
> -}
> -
> // If this is a reference to a subset of the elements of a vector, create an
> // appropriate shufflevector.
> RValue CodeGenFunction::EmitLoadOfExtVectorElementLValue(LValue LV,
> @@ -820,11 +805,8 @@
>     if (Dst.isBitField())
>       return EmitStoreThroughBitfieldLValue(Src, Dst, Ty);
> 
> -    if (Dst.isPropertyRef())
> -      return EmitStoreThroughPropertyRefLValue(Src, Dst, Ty);
> -
> -    assert(Dst.isKVCRef() && "Unknown LValue type");
> -    return EmitStoreThroughKVCRefLValue(Src, Dst, Ty);
> +    assert(Dst.isPropertyRef() && "Unknown LValue type");
> +    return EmitStoreThroughPropertyRefLValue(Src, Dst);
>   }
> 
>   if (Dst.isObjCWeak() && !Dst.isNonGC()) {
> @@ -969,18 +951,6 @@
>   }
> }
> 
> -void CodeGenFunction::EmitStoreThroughPropertyRefLValue(RValue Src,
> -                                                        LValue Dst,
> -                                                        QualType Ty) {
> -  EmitObjCPropertySet(Dst.getPropertyRefExpr(), Src);
> -}
> -
> -void CodeGenFunction::EmitStoreThroughKVCRefLValue(RValue Src,
> -                                                   LValue Dst,
> -                                                   QualType Ty) {
> -  EmitObjCPropertySet(Dst.getKVCRefExpr(), Src);
> -}
> -
> void CodeGenFunction::EmitStoreThroughExtVectorComponentLValue(RValue Src,
>                                                                LValue Dst,
>                                                                QualType Ty) {
> @@ -1569,7 +1539,7 @@
>     BaseQuals = PTy->getPointeeType().getQualifiers();
>   } else if (ObjCPropertyRefExpr *PRE
>                = dyn_cast<ObjCPropertyRefExpr>(BaseExpr->IgnoreParens())) {
> -    RValue RV = EmitObjCPropertyGet(PRE);
> +    RValue RV = EmitLoadOfPropertyRefLValue(EmitObjCPropertyRefLValue(PRE));
>     BaseValue = RV.getAggregateAddr();
>     BaseQuals = BaseExpr->getType().getQualifiers();
>   } else {
> @@ -1788,11 +1758,9 @@
>   case CK_NoOp:
>     if (!E->getSubExpr()->isRValue() || E->getType()->isRecordType()) {
>       LValue LV = EmitLValue(E->getSubExpr());
> -      if (LV.isPropertyRef() || LV.isKVCRef()) {
> +      if (LV.isPropertyRef()) {
>         QualType QT = E->getSubExpr()->getType();
> -        RValue RV = 
> -          LV.isPropertyRef() ? EmitLoadOfPropertyRefLValue(LV, QT) 
> -                             : EmitLoadOfKVCRefLValue(LV, QT);
> +        RValue RV = EmitLoadOfPropertyRefLValue(LV);
>         assert(RV.isAggregate());
>         llvm::Value *V = RV.getAggregateAddr();
>         return MakeAddrLValue(V, QT);
> @@ -1861,11 +1829,9 @@
> 
>     LValue LV = EmitLValue(E->getSubExpr());
>     llvm::Value *This;
> -    if (LV.isPropertyRef() || LV.isKVCRef()) {
> +    if (LV.isPropertyRef()) {
>       QualType QT = E->getSubExpr()->getType();
> -      RValue RV = 
> -        LV.isPropertyRef() ? EmitLoadOfPropertyRefLValue(LV, QT)
> -                           : EmitLoadOfKVCRefLValue(LV, QT);
> +      RValue RV = EmitLoadOfPropertyRefLValue(LV);
>       assert (!RV.isScalar() && "EmitCastLValue");
>       This = RV.getAggregateAddr();
>     }
> @@ -2107,9 +2073,15 @@
>   // This is a special l-value that just issues sends when we load or
>   // store through it.
> 
> -  if (E->isImplicitProperty())
> -    return LValue::MakeKVCRef(E, E->getType().getCVRQualifiers());
> -  return LValue::MakePropertyRef(E, E->getType().getCVRQualifiers());
> +  // For certain base kinds, we need to emit the base immediately.
> +  llvm::Value *Base;
> +  if (E->isSuperReceiver())
> +    Base = 0;
> +  else if (E->isClassReceiver())
> +    Base = CGM.getObjCRuntime().GetClass(Builder, E->getClassReceiver());
> +  else
> +    Base = EmitScalarExpr(E->getBase());
> +  return LValue::MakePropertyRef(E, Base);
> }
> 
> LValue CodeGenFunction::EmitStmtExprLValue(const StmtExpr *E) {
> 
> Modified: cfe/trunk/lib/CodeGen/CGExprAgg.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGExprAgg.cpp?rev=120884&r1=120883&r2=120884&view=diff
> ==============================================================================
> --- cfe/trunk/lib/CodeGen/CGExprAgg.cpp (original)
> +++ cfe/trunk/lib/CodeGen/CGExprAgg.cpp Fri Dec  3 20:32:38 2010
> @@ -349,7 +349,8 @@
> }
> 
> void AggExprEmitter::VisitObjCPropertyRefExpr(ObjCPropertyRefExpr *E) {
> -  RValue RV = CGF.EmitObjCPropertyGet(E, getReturnValueSlot());
> +  RValue RV = CGF.EmitLoadOfPropertyRefLValue(CGF.EmitObjCPropertyRefLValue(E),
> +                                              getReturnValueSlot());
>   EmitGCMove(E, RV);
> }
> 
> @@ -388,11 +389,7 @@
>   if (LHS.isPropertyRef()) {
>     AggValueSlot Slot = EnsureSlot(E->getRHS()->getType());
>     CGF.EmitAggExpr(E->getRHS(), Slot);
> -    CGF.EmitObjCPropertySet(LHS.getPropertyRefExpr(), Slot.asRValue());
> -  } else if (LHS.isKVCRef()) {
> -    AggValueSlot Slot = EnsureSlot(E->getRHS()->getType());
> -    CGF.EmitAggExpr(E->getRHS(), Slot);
> -    CGF.EmitObjCPropertySet(LHS.getKVCRefExpr(), Slot.asRValue());
> +    CGF.EmitStoreThroughPropertyRefLValue(Slot.asRValue(), LHS);
>   } else {
>     bool GCollection = false;
>     if (CGF.getContext().getLangOptions().getGCMode())
> 
> Modified: cfe/trunk/lib/CodeGen/CGExprCXX.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGExprCXX.cpp?rev=120884&r1=120883&r2=120884&view=diff
> ==============================================================================
> --- cfe/trunk/lib/CodeGen/CGExprCXX.cpp (original)
> +++ cfe/trunk/lib/CodeGen/CGExprCXX.cpp Fri Dec  3 20:32:38 2010
> @@ -124,11 +124,9 @@
>     This = EmitScalarExpr(ME->getBase());
>   else {
>     LValue BaseLV = EmitLValue(ME->getBase());
> -    if (BaseLV.isPropertyRef() || BaseLV.isKVCRef()) {
> +    if (BaseLV.isPropertyRef()) {
>       QualType QT = ME->getBase()->getType();
> -      RValue RV = 
> -        BaseLV.isPropertyRef() ? EmitLoadOfPropertyRefLValue(BaseLV, QT)
> -          : EmitLoadOfKVCRefLValue(BaseLV, QT);
> +      RValue RV = EmitLoadOfPropertyRefLValue(BaseLV);
>       This = RV.isScalar() ? RV.getScalarVal() : RV.getAggregateAddr();
>     }
>     else
> @@ -242,13 +240,10 @@
>              "EmitCXXOperatorMemberCallExpr - user declared copy assignment");
>       LValue LV = EmitLValue(E->getArg(0));
>       llvm::Value *This;
> -      if (LV.isPropertyRef() || LV.isKVCRef()) {
> +      if (LV.isPropertyRef()) {
>         AggValueSlot Slot = CreateAggTemp(E->getArg(1)->getType());
>         EmitAggExpr(E->getArg(1), Slot);
> -        if (LV.isPropertyRef())
> -          EmitObjCPropertySet(LV.getPropertyRefExpr(), Slot.asRValue());
> -        else
> -          EmitObjCPropertySet(LV.getKVCRefExpr(), Slot.asRValue());
> +        EmitStoreThroughPropertyRefLValue(Slot.asRValue(), LV);
>         return RValue::getAggregate(0, false);
>       }
>       else
> @@ -267,11 +262,9 @@
>                                    FPT->isVariadic());
>   LValue LV = EmitLValue(E->getArg(0));
>   llvm::Value *This;
> -  if (LV.isPropertyRef() || LV.isKVCRef()) {
> +  if (LV.isPropertyRef()) {
>     QualType QT = E->getArg(0)->getType();
> -    RValue RV = 
> -      LV.isPropertyRef() ? EmitLoadOfPropertyRefLValue(LV, QT)
> -                         : EmitLoadOfKVCRefLValue(LV, QT);
> +    RValue RV = EmitLoadOfPropertyRefLValue(LV);
>     assert (!RV.isScalar() && "EmitCXXOperatorMemberCallExpr");
>     This = RV.getAggregateAddr();
>   }
> 
> Modified: cfe/trunk/lib/CodeGen/CGExprComplex.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGExprComplex.cpp?rev=120884&r1=120883&r2=120884&view=diff
> ==============================================================================
> --- cfe/trunk/lib/CodeGen/CGExprComplex.cpp (original)
> +++ cfe/trunk/lib/CodeGen/CGExprComplex.cpp Fri Dec  3 20:32:38 2010
> @@ -64,11 +64,8 @@
>     if (LV.isSimple())
>       return EmitLoadOfComplex(LV.getAddress(), LV.isVolatileQualified());
> 
> -    if (LV.isPropertyRef())
> -      return CGF.EmitObjCPropertyGet(LV.getPropertyRefExpr()).getComplexVal();
> -
> -    assert(LV.isKVCRef() && "Unknown LValue type!");
> -    return CGF.EmitObjCPropertyGet(LV.getKVCRefExpr()).getComplexVal();
> +    assert(LV.isPropertyRef() && "Unknown LValue type!");
> +    return CGF.EmitLoadOfPropertyRefLValue(LV).getComplexVal();
>   }
> 
>   /// EmitLoadOfComplex - Given a pointer to a complex value, emit code to load
> @@ -531,11 +528,7 @@
>   // We know the LHS is a complex lvalue.
>   ComplexPairTy LHSComplexPair;
>   if (LHS.isPropertyRef())
> -    LHSComplexPair =
> -      CGF.EmitObjCPropertyGet(LHS.getPropertyRefExpr()).getComplexVal();
> -  else if (LHS.isKVCRef())
> -    LHSComplexPair =
> -      CGF.EmitObjCPropertyGet(LHS.getKVCRefExpr()).getComplexVal();
> +    LHSComplexPair = CGF.EmitLoadOfPropertyRefLValue(LHS).getComplexVal();
>   else
>     LHSComplexPair = EmitLoadOfComplex(LHS.getAddress(),
>                                        LHS.isVolatileQualified());
> @@ -551,10 +544,7 @@
> 
>   // Store the result value into the LHS lvalue.
>   if (LHS.isPropertyRef())
> -    CGF.EmitObjCPropertySet(LHS.getPropertyRefExpr(),
> -                            RValue::getComplex(Result));
> -  else if (LHS.isKVCRef())
> -    CGF.EmitObjCPropertySet(LHS.getKVCRefExpr(), RValue::getComplex(Result));
> +    CGF.EmitStoreThroughPropertyRefLValue(RValue::getComplex(Result), LHS);
>   else
>     EmitStoreOfComplex(Result, LHS.getAddress(), LHS.isVolatileQualified());
> 
> @@ -573,7 +563,7 @@
>     return Val;
> 
>   // Objective-C property assignment never reloads the value following a store.
> -  if (LV.isPropertyRef() || LV.isKVCRef())
> +  if (LV.isPropertyRef())
>     return Val;
> 
>   // If the lvalue is non-volatile, return the computed value of the assignment.
> @@ -599,9 +589,7 @@
> 
>   // Store the result value into the LHS lvalue.
>   if (LHS.isPropertyRef())
> -    CGF.EmitObjCPropertySet(LHS.getPropertyRefExpr(), RValue::getComplex(Val));
> -  else if (LHS.isKVCRef())
> -    CGF.EmitObjCPropertySet(LHS.getKVCRefExpr(), RValue::getComplex(Val));
> +    CGF.EmitStoreThroughPropertyRefLValue(RValue::getComplex(Val), LHS);
>   else
>     EmitStoreOfComplex(Val, LHS.getAddress(), LHS.isVolatileQualified());
> 
> @@ -617,7 +605,7 @@
>     return Val;
> 
>   // Objective-C property assignment never reloads the value following a store.
> -  if (LV.isPropertyRef() || LV.isKVCRef())
> +  if (LV.isPropertyRef())
>     return Val;
> 
>   // If the lvalue is non-volatile, return the computed value of the assignment.
> 
> Modified: cfe/trunk/lib/CodeGen/CGExprScalar.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGExprScalar.cpp?rev=120884&r1=120883&r2=120884&view=diff
> ==============================================================================
> --- cfe/trunk/lib/CodeGen/CGExprScalar.cpp (original)
> +++ cfe/trunk/lib/CodeGen/CGExprScalar.cpp Fri Dec  3 20:32:38 2010
> @@ -1127,9 +1127,7 @@
>     if (E->Classify(CGF.getContext()).isGLValue()) {
>       LValue LV = CGF.EmitLValue(E);
>       if (LV.isPropertyRef())
> -        CGF.EmitLoadOfPropertyRefLValue(LV, E->getType());
> -      else if (LV.isKVCRef())
> -        CGF.EmitLoadOfKVCRefLValue(LV, E->getType());
> +        CGF.EmitLoadOfPropertyRefLValue(LV);
>     }
>     else
>       CGF.EmitAnyExpr(E, AggValueSlot::ignored(), true);
> @@ -1583,7 +1581,7 @@
>     return RHS;
> 
>   // Objective-C property assignment never reloads the value following a store.
> -  if (LHS.isPropertyRef() || LHS.isKVCRef())
> +  if (LHS.isPropertyRef())
>     return RHS;
> 
>   // If the lvalue is non-volatile, return the computed value of the assignment.
> @@ -2183,7 +2181,7 @@
>     return RHS;
> 
>   // Objective-C property assignment never reloads the value following a store.
> -  if (LHS.isPropertyRef() || LHS.isKVCRef())
> +  if (LHS.isPropertyRef())
>     return RHS;
> 
>   // If the lvalue is non-volatile, return the computed value of the assignment.
> 
> Modified: cfe/trunk/lib/CodeGen/CGObjC.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGObjC.cpp?rev=120884&r1=120883&r2=120884&view=diff
> ==============================================================================
> --- cfe/trunk/lib/CodeGen/CGObjC.cpp (original)
> +++ cfe/trunk/lib/CodeGen/CGObjC.cpp Fri Dec  3 20:32:38 2010
> @@ -528,8 +528,9 @@
> 
> }
> 
> -RValue CodeGenFunction::EmitObjCPropertyGet(const ObjCPropertyRefExpr *E,
> -                                            ReturnValueSlot Return) {
> +RValue CodeGenFunction::EmitLoadOfPropertyRefLValue(LValue LV,
> +                                                    ReturnValueSlot Return) {
> +  const ObjCPropertyRefExpr *E = LV.getPropertyRefExpr();
>   QualType ResultType;
>   Selector S;
>   if (E->isExplicitProperty()) {
> @@ -545,14 +546,9 @@
>   if (E->isSuperReceiver())
>     return EmitObjCSuperPropertyGet(E, S, Return);
> 
> -  llvm::Value *Receiver;
> -  const ObjCInterfaceDecl *ReceiverClass = 0;
> -  if (E->isClassReceiver()) {
> -    ReceiverClass = E->getClassReceiver();
> -    Receiver = CGM.getObjCRuntime().GetClass(Builder, ReceiverClass);
> -  } else {
> -    Receiver = EmitScalarExpr(E->getBase());
> -  }
> +  llvm::Value *Receiver = LV.getPropertyRefBaseAddr();
> +  const ObjCInterfaceDecl *ReceiverClass
> +    = (E->isClassReceiver() ? E->getClassReceiver() : 0);
>   return CGM.getObjCRuntime().
>              GenerateMessageSend(*this, Return, ResultType, S,
>                                  Receiver, CallArgList(), ReceiverClass);
> @@ -579,8 +575,9 @@
>   return;
> }
> 
> -void CodeGenFunction::EmitObjCPropertySet(const ObjCPropertyRefExpr *E,
> -                                          RValue Src) {
> +void CodeGenFunction::EmitStoreThroughPropertyRefLValue(RValue Src,
> +                                                        LValue Dst) {
> +  const ObjCPropertyRefExpr *E = Dst.getPropertyRefExpr();
>   Selector S = E->getSetterSelector();
>   QualType ArgType;
>   if (E->isImplicitProperty()) {
> @@ -596,14 +593,9 @@
>     return;
>   }
> 
> -  const ObjCInterfaceDecl *ReceiverClass = 0;
> -  llvm::Value *Receiver;
> -  if (E->isClassReceiver()) {
> -    ReceiverClass = E->getClassReceiver();
> -    Receiver = CGM.getObjCRuntime().GetClass(Builder, ReceiverClass);
> -  } else {
> -    Receiver = EmitScalarExpr(E->getBase());
> -  }
> +  llvm::Value *Receiver = Dst.getPropertyRefBaseAddr();
> +  const ObjCInterfaceDecl *ReceiverClass
> +    = (E->isClassReceiver() ? E->getClassReceiver() : 0);
> 
>   CallArgList Args;
>   Args.push_back(std::make_pair(Src, ArgType));
> 
> Modified: cfe/trunk/lib/CodeGen/CGValue.h
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGValue.h?rev=120884&r1=120883&r2=120884&view=diff
> ==============================================================================
> --- cfe/trunk/lib/CodeGen/CGValue.h (original)
> +++ cfe/trunk/lib/CodeGen/CGValue.h Fri Dec  3 20:32:38 2010
> @@ -108,10 +108,8 @@
>     VectorElt,    // This is a vector element l-value (V[i]), use getVector*
>     BitField,     // This is a bitfield l-value, use getBitfield*.
>     ExtVectorElt, // This is an extended vector subset, use getExtVectorComp
> -    PropertyRef,  // This is an Objective-C property reference, use
> +    PropertyRef   // This is an Objective-C property reference, use
>                   // getPropertyRefExpr
> -    KVCRef        // This is an objective-c 'implicit' property ref,
> -                  // use getKVCRefExpr
>   } LVType;
> 
>   llvm::Value *V;
> @@ -177,7 +175,6 @@
>   bool isBitField() const { return LVType == BitField; }
>   bool isExtVectorElt() const { return LVType == ExtVectorElt; }
>   bool isPropertyRef() const { return LVType == PropertyRef; }
> -  bool isKVCRef() const { return LVType == KVCRef; }
> 
>   bool isVolatileQualified() const { return Quals.hasVolatile(); }
>   bool isRestrictQualified() const { return Quals.hasRestrict(); }
> @@ -245,14 +242,12 @@
>   }
> 
>   // property ref lvalue
> -  const ObjCPropertyRefExpr *getPropertyRefExpr() const {
> +  llvm::Value *getPropertyRefBaseAddr() const {
>     assert(isPropertyRef());
> -    return PropertyRefExpr;
> +    return V;
>   }
> -
> -  // 'implicit' property ref lvalue
> -  const ObjCPropertyRefExpr *getKVCRefExpr() const {
> -    assert(isKVCRef());
> +  const ObjCPropertyRefExpr *getPropertyRefExpr() const {
> +    assert(isPropertyRef());
>     return PropertyRefExpr;
>   }
> 
> @@ -309,20 +304,12 @@
>   // the lvalue. However, this complicates the code a bit, and I haven't figured
>   // out how to make it go wrong yet.
>   static LValue MakePropertyRef(const ObjCPropertyRefExpr *E,
> -                                unsigned CVR) {
> +                                llvm::Value *Base) {
>     LValue R;
>     R.LVType = PropertyRef;
> +    R.V = Base;
>     R.PropertyRefExpr = E;
> -    R.Initialize(Qualifiers::fromCVRMask(CVR));
> -    return R;
> -  }
> -
> -  static LValue MakeKVCRef(const ObjCPropertyRefExpr *E,
> -                           unsigned CVR) {
> -    LValue R;
> -    R.LVType = KVCRef;
> -    R.PropertyRefExpr = E;
> -    R.Initialize(Qualifiers::fromCVRMask(CVR));
> +    R.Initialize(Qualifiers());
>     return R;
>   }
> };
> 
> Modified: cfe/trunk/lib/CodeGen/CodeGenFunction.h
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CodeGenFunction.h?rev=120884&r1=120883&r2=120884&view=diff
> ==============================================================================
> --- cfe/trunk/lib/CodeGen/CodeGenFunction.h (original)
> +++ cfe/trunk/lib/CodeGen/CodeGenFunction.h Fri Dec  3 20:32:38 2010
> @@ -1382,9 +1382,8 @@
>   RValue EmitLoadOfLValue(LValue V, QualType LVType);
>   RValue EmitLoadOfExtVectorElementLValue(LValue V, QualType LVType);
>   RValue EmitLoadOfBitfieldLValue(LValue LV, QualType ExprType);
> -  RValue EmitLoadOfPropertyRefLValue(LValue LV, QualType ExprType);
> -  RValue EmitLoadOfKVCRefLValue(LValue LV, QualType ExprType);
> -
> +  RValue EmitLoadOfPropertyRefLValue(LValue LV,
> +                                 ReturnValueSlot Return = ReturnValueSlot());
> 
>   /// EmitStoreThroughLValue - Store the specified rvalue into the specified
>   /// lvalue, where both are guaranteed to the have the same type, and that type
> @@ -1392,8 +1391,7 @@
>   void EmitStoreThroughLValue(RValue Src, LValue Dst, QualType Ty);
>   void EmitStoreThroughExtVectorComponentLValue(RValue Src, LValue Dst,
>                                                 QualType Ty);
> -  void EmitStoreThroughPropertyRefLValue(RValue Src, LValue Dst, QualType Ty);
> -  void EmitStoreThroughKVCRefLValue(RValue Src, LValue Dst, QualType Ty);
> +  void EmitStoreThroughPropertyRefLValue(RValue Src, LValue Dst);
> 
>   /// EmitStoreThroughLValue - Store Src into Dst with same constraints as
>   /// EmitStoreThroughLValue.
> @@ -1544,11 +1542,8 @@
>   llvm::Value *EmitObjCSelectorExpr(const ObjCSelectorExpr *E);
>   RValue EmitObjCMessageExpr(const ObjCMessageExpr *E,
>                              ReturnValueSlot Return = ReturnValueSlot());
> -  RValue EmitObjCPropertyGet(const ObjCPropertyRefExpr *E,
> -                             ReturnValueSlot Return = ReturnValueSlot());
>   RValue EmitObjCSuperPropertyGet(const Expr *Exp, const Selector &S,
>                                   ReturnValueSlot Return = ReturnValueSlot());
> -  void EmitObjCPropertySet(const ObjCPropertyRefExpr *E, RValue Src);
>   void EmitObjCSuperPropertySet(const Expr *E, const Selector &S, RValue Src);
> 
> 
> 
> 
> _______________________________________________
> cfe-commits mailing list
> cfe-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits





More information about the cfe-commits mailing list