[llvm-commits] [llvm-gcc-4.2] r49386 - /llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp

Evan Cheng evan.cheng at apple.com
Tue Apr 8 11:07:51 PDT 2008


Hi Devang,

This is somewhat confusing to me. isShadowRet means returning an  
aggregate in a shadow argument, while  isAggrRet means returning an  
aggregare using multiple scalar values?

Thanks,

Evan

On Apr 8, 2008, at 9:48 AM, Devang Patel wrote:

> Author: dpatel
> Date: Tue Apr  8 11:48:04 2008
> New Revision: 49386
>
> URL: http://llvm.org/viewvc/llvm-project?rev=49386&view=rev
> Log:
> Keep track of calls that return multiple values.
>
> Modified:
>    llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp
>
> 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=49386&r1=49385&r2=49386&view=diff
>
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> ======================================================================
> --- llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp (original)
> +++ llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp Tue Apr  8 11:48:04 2008
> @@ -2311,6 +2311,7 @@
>     Value *TheValue;
>     MemRef RetBuf;
>     bool isShadowRet;
> +    bool isAggrRet;
>
>     FunctionCallArgumentConversion(SmallVector<Value*, 16> &ops,
>                                    const FunctionType *FnTy,
> @@ -2318,7 +2319,8 @@
>                                    bool ReturnSlotOpt,
>                                    LLVMFoldingBuilder &b)
>       : CallOperands(ops), FTy(FnTy), DestLoc(destloc),
> -        useReturnSlot(ReturnSlotOpt), Builder(b),  
> isShadowRet(false) { }
> +        useReturnSlot(ReturnSlotOpt), Builder(b), isShadowRet(false),
> +        isAggrRet(false) { }
>
>     // Push the address of an argument.
>     void pushAddress(Value *Loc) {
> @@ -2367,6 +2369,7 @@
>     }
>
>     bool isShadowReturn() { return isShadowRet; }
> +    bool isAggrReturn() { return isAggrRet; }
>
>     // EmitShadowResult - If the return result was redirected to a  
> buffer,
>     // emit it now.
> @@ -2406,6 +2409,7 @@
>     /// returns an aggregate value using multiple return values.
>     void HandleAggregateResultAsAggregate(const Type *AggrTy) {
>       // There is nothing to do here.
> +      isAggrRet = true;
>     }
>
>     /// HandleAggregateShadowArgument - This callback is invoked if  
> the function
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits




More information about the llvm-commits mailing list