[llvm-commits] [llvm-gcc-4.2] r51447 - in /llvm-gcc-4.2/trunk/gcc: config/i386/llvm-i386.cpp llvm-abi.h llvm-backend.cpp llvm-convert.cpp
Dan Gohman
gohman at apple.com
Thu May 22 15:24:27 PDT 2008
Author: djg
Date: Thu May 22 17:24:27 2008
New Revision: 51447
URL: http://llvm.org/viewvc/llvm-project?rev=51447&view=rev
Log:
Change uses of llvm::Type::isFirstClassType to use the new
llvm::Type::isSingleValueType. Currently these two functions have
the same behavior, but soon isFirstClassType will return true for
struct and array types.
llvm-gcc may some day want to use of isFirstClassType for some of
these some day as an optimization, but it'll require some
consideration.
Modified:
llvm-gcc-4.2/trunk/gcc/config/i386/llvm-i386.cpp
llvm-gcc-4.2/trunk/gcc/llvm-abi.h
llvm-gcc-4.2/trunk/gcc/llvm-backend.cpp
llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp
Modified: llvm-gcc-4.2/trunk/gcc/config/i386/llvm-i386.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/config/i386/llvm-i386.cpp?rev=51447&r1=51446&r2=51447&view=diff
==============================================================================
--- llvm-gcc-4.2/trunk/gcc/config/i386/llvm-i386.cpp (original)
+++ llvm-gcc-4.2/trunk/gcc/config/i386/llvm-i386.cpp Thu May 22 17:24:27 2008
@@ -872,7 +872,7 @@
const Type *ETy = STy->getElementType(i);
if (const ArrayType *ATy = dyn_cast<ArrayType>(ETy))
ETy = ATy->getElementType();
- if (!ETy->isFirstClassType() && ETy->getTypeID() != Type::X86_FP80TyID)
+ if (!ETy->isSingleValueType() && ETy->getTypeID() != Type::X86_FP80TyID)
return false;
if (ETy->isInteger())
foundInt = true;
@@ -1142,7 +1142,7 @@
const Type *DestElemType = DestTy->getElementType(DNO);
// Directly access first class values using getresult.
- if (DestElemType->isFirstClassType()) {
+ if (DestElemType->isSingleValueType()) {
Value *GEP = Builder.CreateStructGEP(Dest, DNO, "mrv_gep");
GetResultInst *GR = Builder.CreateGetResult(Src, SNO, "mrv_gr");
Builder.CreateStore(GR, GEP, isVolatile);
Modified: llvm-gcc-4.2/trunk/gcc/llvm-abi.h
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/llvm-abi.h?rev=51447&r1=51446&r2=51447&view=diff
==============================================================================
--- llvm-gcc-4.2/trunk/gcc/llvm-abi.h (original)
+++ llvm-gcc-4.2/trunk/gcc/llvm-abi.h Thu May 22 17:24:27 2008
@@ -363,7 +363,7 @@
C.HandleScalarShadowArgument(PointerType::getUnqual(Ty), false);
else
C.HandleScalarResult(Ty);
- } else if (Ty->isFirstClassType() || Ty == Type::VoidTy) {
+ } else if (Ty->isSingleValueType() || Ty == Type::VoidTy) {
// Return scalar values normally.
C.HandleScalarResult(Ty);
} else if (doNotUseShadowReturn(type, fn)) {
@@ -417,7 +417,7 @@
C.HandleScalarArgument(Ty, type);
ScalarElts.push_back(Ty);
}
- } else if (Ty->isFirstClassType()) {
+ } else if (Ty->isSingleValueType()) {
C.HandleScalarArgument(Ty, type);
ScalarElts.push_back(Ty);
} else if (LLVM_SHOULD_PASS_AGGREGATE_IN_MIXED_REGS(type, Ty, Elts)) {
Modified: llvm-gcc-4.2/trunk/gcc/llvm-backend.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/llvm-backend.cpp?rev=51447&r1=51446&r2=51447&view=diff
==============================================================================
--- llvm-gcc-4.2/trunk/gcc/llvm-backend.cpp (original)
+++ llvm-gcc-4.2/trunk/gcc/llvm-backend.cpp Thu May 22 17:24:27 2008
@@ -1078,7 +1078,7 @@
#endif
else if (DECL_INITIAL(decl) != 0 && TREE_STATIC(decl))
error("global register variable has initial value");
- else if (!Ty->isFirstClassType())
+ else if (!Ty->isSingleValueType())
sorry("%JLLVM cannot handle register variable %qD, report a bug",
decl, decl);
else {
Modified: llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp?rev=51447&r1=51446&r2=51447&view=diff
==============================================================================
--- llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp (original)
+++ llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp Thu May 22 17:24:27 2008
@@ -709,7 +709,7 @@
const Type *ArgTy = ConvertType(TREE_TYPE(Args));
bool isInvRef = isPassedByInvisibleReference(TREE_TYPE(Args));
if (isInvRef ||
- (!ArgTy->isFirstClassType() &&
+ (!ArgTy->isSingleValueType() &&
isPassedByVal(TREE_TYPE(Args), ArgTy, ScalarArgs))) {
// If the value is passed by 'invisible reference' or 'byval reference',
// the l-value for the argument IS the argument itself.
@@ -1296,7 +1296,7 @@
unsigned Alignment = std::min(DestLoc.Alignment, SrcLoc.Alignment);
- if (ElTy->isFirstClassType()) {
+ if (ElTy->isSingleValueType()) {
LoadInst *V = Builder.CreateLoad(SrcLoc.Ptr, SrcLoc.Volatile, "tmp");
StoreInst *S = Builder.CreateStore(V, DestLoc.Ptr, DestLoc.Volatile);
V->setAlignment(Alignment);
@@ -1330,7 +1330,7 @@
/// CountAggregateElements - Return the number of elements in the specified type
/// that will need to be loaded/stored if we copy this by explicit accesses.
static unsigned CountAggregateElements(const Type *Ty) {
- if (Ty->isFirstClassType()) return 1;
+ if (Ty->isSingleValueType()) return 1;
if (const StructType *STy = dyn_cast<StructType>(Ty)) {
unsigned NumElts = 0;
@@ -1381,7 +1381,7 @@
static void ZeroAggregate(MemRef DestLoc, IRBuilder &Builder) {
const Type *ElTy =
cast<PointerType>(DestLoc.Ptr->getType())->getElementType();
- if (ElTy->isFirstClassType()) {
+ if (ElTy->isSingleValueType()) {
StoreInst *St = Builder.CreateStore(Constant::getNullValue(ElTy),
DestLoc.Ptr, DestLoc.Volatile);
St->setAlignment(DestLoc.Alignment);
@@ -2648,7 +2648,7 @@
const Type *ArgTy = ConvertType(TREE_TYPE(TREE_VALUE(arg)));
// Push the argument.
- if (ArgTy->isFirstClassType()) {
+ if (ArgTy->isSingleValueType()) {
// A scalar - push the value.
Client.pushValue(Emit(TREE_VALUE(arg), 0));
} else {
@@ -2836,7 +2836,7 @@
if (!LV.isBitfield()) {
const Type *ValTy = ConvertType(TREE_TYPE(rhs));
- if (ValTy->isFirstClassType()) {
+ if (ValTy->isSingleValueType()) {
// Non-bitfield, scalar value. Just emit a store.
Value *RHS = Emit(rhs, 0);
// Convert RHS to the right type if we can, otherwise convert the pointer.
@@ -3200,7 +3200,7 @@
return EmitPtrBinOp(exp, Opc); // Pointer arithmetic!
if (isa<StructType>(Ty))
return EmitComplexBinOp(exp, DestLoc);
- assert(Ty->isFirstClassType() && DestLoc == 0 &&
+ assert(Ty->isSingleValueType() && DestLoc == 0 &&
"Bad binary operation!");
Value *LHS = Emit(TREE_OPERAND(exp, 0), 0);
@@ -3617,7 +3617,7 @@
// If there was an error, return something bogus.
if (ValidateRegisterVariable(decl)) {
- if (Ty->isFirstClassType())
+ if (Ty->isSingleValueType())
return UndefValue::get(Ty);
return 0; // Just don't copy something into DestLoc.
}
@@ -3920,7 +3920,7 @@
cast<PointerType>(Dest.Ptr->getType())->getElementType();
assert(!Dest.isBitfield() && "Cannot assign into a bitfield!");
- if (!AllowsMem && DestValTy->isFirstClassType()) { // Reg dest -> asm return
+ if (!AllowsMem && DestValTy->isSingleValueType()) { // Reg dest -> asm return
StoreCallResultAddrs.push_back(Dest.Ptr);
ConstraintStr += ",=";
ConstraintStr += SimplifiedConstraint;
@@ -3955,7 +3955,7 @@
const Type *LLVMTy = ConvertType(type);
Value *Op = 0;
- if (LLVMTy->isFirstClassType()) {
+ if (LLVMTy->isSingleValueType()) {
if (TREE_CODE(Val)==ADDR_EXPR &&
TREE_CODE(TREE_OPERAND(Val,0))==LABEL_DECL) {
// Emit the label, but do not assume it is going to be the target
@@ -4247,7 +4247,7 @@
error("%Hunsupported target builtin %<%s%> used", &EXPR_LOCATION(exp),
BuiltinName);
const Type *ResTy = ConvertType(TREE_TYPE(exp));
- if (ResTy->isFirstClassType())
+ if (ResTy->isSingleValueType())
Result = UndefValue::get(ResTy);
return true;
}
@@ -5694,7 +5694,7 @@
return BuildVector(BuildVecOps);
}
- assert(!Ty->isFirstClassType() && "Constructor for scalar type??");
+ assert(!Ty->isSingleValueType() && "Constructor for scalar type??");
// Start out with the value zero'd out.
EmitAggregateZero(*DestLoc, type);
@@ -5722,7 +5722,7 @@
if (!tree_purpose)
return 0; // Not actually initialized?
- if (!ConvertType(TREE_TYPE(tree_purpose))->isFirstClassType()) {
+ if (!ConvertType(TREE_TYPE(tree_purpose))->isSingleValueType()) {
Value *V = Emit(tree_value, DestLoc);
assert(V == 0 && "Aggregate value returned in a register?");
} else {
@@ -5927,7 +5927,7 @@
bool TyIsSigned = !TYPE_UNSIGNED(TREE_TYPE(exp));
// If this is a structure-to-structure cast, just return the uncasted value.
- if (!Elt->getType()->isFirstClassType() || !Ty->isFirstClassType())
+ if (!Elt->getType()->isSingleValueType() || !Ty->isSingleValueType())
return Elt;
// Elt and Ty can be integer, float or pointer here: need generalized cast
More information about the llvm-commits
mailing list