|
@@ -997,7 +997,7 @@ EmitComplexPrePostIncDec(const UnaryOperator *E, LValue LV,
|
|
// Add the inc/dec to the real part.
|
|
// Add the inc/dec to the real part.
|
|
NextVal = Builder.CreateAdd(InVal.first, NextVal, isInc ? "inc" : "dec");
|
|
NextVal = Builder.CreateAdd(InVal.first, NextVal, isInc ? "inc" : "dec");
|
|
} else {
|
|
} else {
|
|
- QualType ElemTy = E->getType()->getAs<ComplexType>()->getElementType();
|
|
|
|
|
|
+ QualType ElemTy = E->getType()->castAs<ComplexType>()->getElementType();
|
|
llvm::APFloat FVal(getContext().getFloatTypeSemantics(ElemTy), 1);
|
|
llvm::APFloat FVal(getContext().getFloatTypeSemantics(ElemTy), 1);
|
|
if (!isInc)
|
|
if (!isInc)
|
|
FVal.changeSign();
|
|
FVal.changeSign();
|
|
@@ -2194,7 +2194,7 @@ static void setObjCGCLValueClass(const ASTContext &Ctx, const Expr *E,
|
|
// If ivar is a structure pointer, assigning to field of
|
|
// If ivar is a structure pointer, assigning to field of
|
|
// this struct follows gcc's behavior and makes it a non-ivar
|
|
// this struct follows gcc's behavior and makes it a non-ivar
|
|
// writer-barrier conservatively.
|
|
// writer-barrier conservatively.
|
|
- ExpTy = ExpTy->getAs<PointerType>()->getPointeeType();
|
|
|
|
|
|
+ ExpTy = ExpTy->castAs<PointerType>()->getPointeeType();
|
|
if (ExpTy->isRecordType()) {
|
|
if (ExpTy->isRecordType()) {
|
|
LV.setObjCIvar(false);
|
|
LV.setObjCIvar(false);
|
|
return;
|
|
return;
|
|
@@ -2230,7 +2230,7 @@ static void setObjCGCLValueClass(const ASTContext &Ctx, const Expr *E,
|
|
// a non-ivar write-barrier.
|
|
// a non-ivar write-barrier.
|
|
QualType ExpTy = E->getType();
|
|
QualType ExpTy = E->getType();
|
|
if (ExpTy->isPointerType())
|
|
if (ExpTy->isPointerType())
|
|
- ExpTy = ExpTy->getAs<PointerType>()->getPointeeType();
|
|
|
|
|
|
+ ExpTy = ExpTy->castAs<PointerType>()->getPointeeType();
|
|
if (ExpTy->isRecordType())
|
|
if (ExpTy->isRecordType())
|
|
LV.setObjCIvar(false);
|
|
LV.setObjCIvar(false);
|
|
}
|
|
}
|