On Wed, 4 Nov 2020 00:21:15 -0500
George Koehler <kern...@gmail.com> wrote:

> I posted this diff at https://reviews.llvm.org/D90329 ...
> 
> ok to commit?  --George

No, I withdraw my diff.  In about a week, I might have a better diff
that also fixes va_arg with some C++ types.  This only affects 32-bit
powerpc; nothing will change on powerpc64 or elsewhere.  --George

> Index: clang/lib/CodeGen/TargetInfo.cpp
> ===================================================================
> RCS file: /cvs/src/gnu/llvm/clang/lib/CodeGen/TargetInfo.cpp,v
> retrieving revision 1.1.1.2
> diff -u -p -r1.1.1.2 TargetInfo.cpp
> --- clang/lib/CodeGen/TargetInfo.cpp  9 Aug 2020 15:51:11 -0000       1.1.1.2
> +++ clang/lib/CodeGen/TargetInfo.cpp  28 Oct 2020 23:43:54 -0000
> @@ -4248,8 +4248,8 @@ Address PPC32_SVR4_ABIInfo::EmitVAArg(Co
>    // };
>  
>    bool isI64 = Ty->isIntegerType() && getContext().getTypeSize(Ty) == 64;
> -  bool isInt =
> -      Ty->isIntegerType() || Ty->isPointerType() || Ty->isAggregateType();
> +  bool isInt = Ty->isIntegerType() || Ty->hasPointerRepresentation() ||
> +               Ty->isAggregateType();
>    bool isF64 = Ty->isFloatingType() && getContext().getTypeSize(Ty) == 64;
>  
>    // All aggregates are passed indirectly?  That doesn't seem consistent


-- 
George Koehler <kern...@gmail.com>

Reply via email to