[cfe-commits] r134946 - in /cfe/trunk: lib/CodeGen/TargetInfo.cpp test/CodeGen/x86_64-arguments.c

Bill Wendling wendling at apple.com
Tue Jul 12 14:13:46 PDT 2011


On Jul 11, 2011, at 5:37 PM, Eli Friedman wrote:

> On Mon, Jul 11, 2011 at 5:30 PM, Bruno Cardoso Lopes
> <bruno.cardoso at gmail.com> wrote:
>> Author: bruno
>> Date: Mon Jul 11 19:30:27 2011
>> New Revision: 134946
>> 
>> URL: http://llvm.org/viewvc/llvm-project?rev=134946&view=rev
>> Log:
>> Fix one x86_64 abi issue and the test to actually look for the right thing,
>> which is: { <4 x float>, <4 x float> } should continue to go through memory.
>> 
>> Modified:
>>    cfe/trunk/lib/CodeGen/TargetInfo.cpp
>>    cfe/trunk/test/CodeGen/x86_64-arguments.c
>> 
>> Modified: cfe/trunk/lib/CodeGen/TargetInfo.cpp
>> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/TargetInfo.cpp?rev=134946&r1=134945&r2=134946&view=diff
>> ==============================================================================
>> --- cfe/trunk/lib/CodeGen/TargetInfo.cpp (original)
>> +++ cfe/trunk/lib/CodeGen/TargetInfo.cpp Mon Jul 11 19:30:27 2011
>> @@ -1228,6 +1228,13 @@
>> 
>>     const RecordDecl *RD = RT->getDecl();
>> 
>> +    // The only case a 256-bit wide vector could be used is when the struct
>> +    // contains a single 256-bit element. Since Lo and Hi logic isn't extended
>> +    // to work for sizes wider than 128, early check and fallback to memory.
>> +    RecordDecl::field_iterator FirstElt = RD->field_begin();
>> +    if (Size > 128 && getContext().getTypeSize(FirstElt->getType()) != 256)
>> +      return;
> 
> What if FirstElt is a struct/array/etc?
> 
This change is causing clang to fail to compile itself. I'm coming up with a testcase.

-bw





More information about the cfe-commits mailing list