diff --git a/llvm/lib/Target/Hexagon/HexagonTargetMachine.h b/llvm/lib/Target/Hexagon/HexagonTargetMachine.h index 6e9a78b766504..84edbe6fd870b 100644 --- a/llvm/lib/Target/Hexagon/HexagonTargetMachine.h +++ b/llvm/lib/Target/Hexagon/HexagonTargetMachine.h @@ -46,6 +46,10 @@ class HexagonTargetMachine : public LLVMTargetMachine { MachineFunctionInfo * createMachineFunctionInfo(BumpPtrAllocator &Allocator, const Function &F, const TargetSubtargetInfo *STI) const override; + + bool isNoopAddrSpaceCast(unsigned SrcAS, unsigned DestAS) const override { + return true; + } }; } // end namespace llvm diff --git a/llvm/test/CodeGen/Hexagon/addrspacecast-crash.ll b/llvm/test/CodeGen/Hexagon/addrspacecast-crash.ll new file mode 100644 index 0000000000000..ce197bdeea1f3 --- /dev/null +++ b/llvm/test/CodeGen/Hexagon/addrspacecast-crash.ll @@ -0,0 +1,12 @@ +; Tests if addrspacecast is handled in Hexagon backend + +; REQUIRES: asserts + +; RUN: llc -march=hexagon %s -o /dev/null + +define double @f(ptr %G, ptr %x) { +BB: + %Castaddrspacecast = addrspacecast ptr %x to ptr addrspace(1) + store ptr addrspace(1) %Castaddrspacecast, ptr %G, align 8 + ret double 0.000000e+00 +}