Author: johannes Date: Mon Feb 11 15:53:29 2008 New Revision: 46971 URL: http://llvm.org/viewvc/llvm-project?rev=46971&view=rev Log: Revert 46958 for the moment; it broke things, and there's a better way to solve the problem.
Modified: llvm-gcc-4.2/trunk/gcc/config/i386/llvm-i386-target.h llvm-gcc-4.2/trunk/gcc/llvm-types.cpp Modified: llvm-gcc-4.2/trunk/gcc/config/i386/llvm-i386-target.h URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/config/i386/llvm-i386-target.h?rev=46971&r1=46970&r2=46971&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/config/i386/llvm-i386-target.h (original) +++ llvm-gcc-4.2/trunk/gcc/config/i386/llvm-i386-target.h Mon Feb 11 15:53:29 2008 @@ -83,15 +83,6 @@ } \ } -/* Aggregates containing SSE vectors are aligned at 16 bytes as parameters; - while long double has GCC alignment of 16 bytes (correct for struct layout) - but is only 4 byte aligned as a parameter. So if a union type contains an - SSE vector, use that as the basis for the constructed LLVM struct. */ -#define TARGET_LLVM_COMPARE_UNION_FIELDS(curType, newType, curAlign, newAlign) \ - (newAlign==curAlign && TARGET_SSE && \ - TheTarget->getTargetLowering()->getByValTypeAlignment(newType) > \ - TheTarget->getTargetLowering()->getByValTypeAlignment(curType)) - #ifdef LLVM_ABI_H extern bool llvm_x86_should_pass_aggregate_in_memory(tree, const Type *); Modified: llvm-gcc-4.2/trunk/gcc/llvm-types.cpp URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/llvm-types.cpp?rev=46971&r1=46970&r2=46971&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/llvm-types.cpp (original) +++ llvm-gcc-4.2/trunk/gcc/llvm-types.cpp Mon Feb 11 15:53:29 2008 @@ -33,7 +33,6 @@ #include "llvm/TypeSymbolTable.h" #include "llvm/Target/TargetData.h" #include "llvm/Target/TargetMachine.h" -#include "llvm/Target/TargetLowering.h" #include "llvm/Assembly/Writer.h" #include "llvm/ADT/DenseMap.h" #include "llvm/ADT/StringExtras.h" @@ -1138,7 +1137,7 @@ // 'sret' functions cannot be 'readnone' or 'readonly'. if (ABIConverter.isStructReturn()) RAttributes &= ~(ParamAttr::ReadNone|ParamAttr::ReadOnly); - + // Compute whether the result needs to be zext or sext'd. RAttributes |= HandleArgumentExtension(TREE_TYPE(type)); @@ -2125,8 +2124,6 @@ /// ConvertUNION - We know that 'type' is a UNION_TYPE or a QUAL_UNION_TYPE: /// convert it to an LLVM type. -/// This involves creating a struct with the right size and alignment. In -/// some cases this is target dependent. const Type *TypeConverter::ConvertUNION(tree type, tree orig_type) { if (const Type *Ty = GET_TYPE_LLVM(type)) { // If we already compiled this type, and if it was not a forward @@ -2173,25 +2170,17 @@ // Select TheTy as union type if it meets one of the following criteria // 1) UnionTy is 0 // 2) TheTy alignment is more then UnionTy - // 3) TheTy size is greater than UnionTy size and TheTy alignment is equal - // to UnionTy + // 3) TheTy size is greater than UnionTy size and TheTy alignment is equal to UnionTy // 4) TheTy size is greater then UnionTy size and TheTy is packed - // FIXME there is no check for packed? bool useTheTy = false; if (UnionTy == 0) useTheTy = true; else if (Align > MaxAlign) useTheTy = true; -#ifdef TARGET_LLVM_COMPARE_UNION_FIELDS - else - useTheTy = TARGET_LLVM_COMPARE_UNION_FIELDS(UnionTy, TheTy, - Align, MaxAlign); -#else else if (MaxAlign == Align && Size > MaxSize) useTheTy = true; - else if (Size > MaxSize) // FIXME really? Seems wrong to lower alignment + else if (Size > MaxSize) useTheTy = true; -#endif if (useTheTy) { UnionTy = TheTy; _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits