Author: evancheng Date: Fri Jan 25 17:02:28 2008 New Revision: 46375 URL: http://llvm.org/viewvc/llvm-project?rev=46375&view=rev Log: Drop zero-sized aggregate arguments.
Modified: llvm-gcc-4.2/trunk/gcc/llvm-abi.h 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=46375&r1=46374&r2=46375&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/llvm-abi.h (original) +++ llvm-gcc-4.2/trunk/gcc/llvm-abi.h Fri Jan 25 17:02:28 2008 @@ -120,6 +120,13 @@ } } +/// isAggregareOfSizeZero - Returns true if this is an aggregate with size zero. +/// +static bool isAggregareOfSizeZero(tree type) { + if (!isAggregateTreeType(type)) return false; + return int_size_in_bytes(type) == 0; +} + // LLVM_SHOULD_PASS_AGGREGATE_USING_BYVAL_ATTR - Return true if this aggregate // value should be passed by value, i.e. passing its address with the byval // attribute bit set. The default is false. @@ -227,6 +234,9 @@ PassInMixedRegisters(type, Ty, Elts); } else if (LLVM_SHOULD_PASS_AGGREGATE_IN_INTEGER_REGS(type)) { PassInIntegerRegisters(type, Ty); + } else if (isAggregareOfSizeZero(type)) { + // Zero sized aggregare, just drop it! + ; } else if (TREE_CODE(type) == RECORD_TYPE) { for (tree Field = TYPE_FIELDS(type); Field; Field = TREE_CHAIN(Field)) if (TREE_CODE(Field) == FIELD_DECL) { _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits