[PATCH 1/1] R600: Use TargetConstant in LowerConstantInitializer

Matt Arsenault arsenm2 at gmail.com
Sun May 18 17:09:56 PDT 2014


On May 18, 2014, at 12:58 PM, Jan Vesely <jan.vesely at rutgers.edu> wrote:

> We can only produce legal types at this stage.
> TargetConstant is an exception
> 
> Signed-off-by: Jan Vesely <jan.vesely at rutgers.edu>
> ---
> 
> This fixes assertion failure (LegalizeDAG.cpp:1171) in one GEGL op.
> The alternative would be to use Constant of
> getSmallestLegalIntType(getPrimitiveSizeInBits) type.
> 
> lib/Target/R600/AMDGPUISelLowering.cpp | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/lib/Target/R600/AMDGPUISelLowering.cpp b/lib/Target/R600/AMDGPUISelLowering.cpp
> index 04924cf..d4c3191 100644
> --- a/lib/Target/R600/AMDGPUISelLowering.cpp
> +++ b/lib/Target/R600/AMDGPUISelLowering.cpp
> @@ -524,7 +524,7 @@ SDValue AMDGPUTargetLowering::LowerConstantInitializer(const Constant* Init,
>   if (const ConstantInt *CI = dyn_cast<ConstantInt>(Init)) {
>     EVT VT = EVT::getEVT(CI->getType());
>     PointerType *PtrTy = PointerType::get(CI->getType(), 0);
> -    return DAG.getStore(Chain, DL,  DAG.getConstant(*CI, VT), InitPtr,
> +    return DAG.getStore(Chain, DL,  DAG.getTargetConstant(*CI, VT), InitPtr,
>                  MachinePointerInfo(UndefValue::get(PtrTy)), false, false,
>                  TD->getPrefTypeAlignment(CI->getType()));
>   }
> @@ -532,7 +532,7 @@ SDValue AMDGPUTargetLowering::LowerConstantInitializer(const Constant* Init,
>   if (const ConstantFP *CFP = dyn_cast<ConstantFP>(Init)) {
>     EVT VT = EVT::getEVT(CFP->getType());
>     PointerType *PtrTy = PointerType::get(CFP->getType(), 0);
> -    return DAG.getStore(Chain, DL, DAG.getConstantFP(*CFP, VT), InitPtr,
> +    return DAG.getStore(Chain, DL, DAG.getTargetConstantFP(*CFP, VT), InitPtr,
>                  MachinePointerInfo(UndefValue::get(PtrTy)), false, false,
>                  TD->getPrefTypeAlignment(CFP->getType()));
>   }
> -- 
> 1.9.0


Needs a test



More information about the llvm-commits mailing list