[llvm-commits] [PATCH] Add the byval attribute and a bit more
    Chris Lattner 
    clattner at apple.com
       
    Mon Jul 16 22:59:18 PDT 2007
    
    
  
On Jul 6, 2007, at 4:00 AM, Rafael Espindola wrote:
>> The patch looks good.  Some questions/comments:
>>
Sorry, just now catching up on this thread. :(
>> +++ include/llvm/CodeGen/SelectionDAGNodes.h    (working copy)
>>
>> +    SturtByVal        = 1<<4,  ///< Struct passed by value
>>
>> This looks like a typo "sturt"
> Changed to "ByVal" based on Duncan's comment.
Ok, sounds good.
>> +++ utils/TableGen/CallingConvEmitter.cpp       (working copy)
>> @@ -67,12 +67,14 @@
>>       O << IndentStr << "if (";
>>
>>       if (Action->isSubClassOf("CCIfType")) {
>> +      O << "!(ArgFlags & ISD::ParamFlags::StructByVal) && (";
>>
>>
>> I don't think CCIfType should automatically mask out byval
>> arguments.  Instead, Plz add a new "notbyval" predicate or something
>> so that this logic is explicit in the .td files.
>
> The reason I did this is that if CCIfType matches "byval" arguments,
> the current backends will generate invalid code (handle it like a
> normal pointer). I have just removed the checks for now, since nothing
> is generating "byval"s.
>
> If a add a notbyval predicated, should I add it to all the current
> uses of CCIfType?
I'd suggest that we just let the backends upgrade as they add support  
for byval.  By default, they will codegen as if the thing is passed  
like a pointer.  Target authors should add support for byval if they  
care, before llvm-gcc support goes in.
-Chris
    
    
More information about the llvm-commits
mailing list