[llvm] r367349 - [NVPTX] Fix PR41651

Michael Liao via llvm-commits llvm-commits at lists.llvm.org
Tue Jul 30 12:52:01 PDT 2019


Author: hliao
Date: Tue Jul 30 12:52:01 2019
New Revision: 367349

URL: http://llvm.org/viewvc/llvm-project?rev=367349&view=rev
Log:
[NVPTX] Fix PR41651

Summary:
- Use the passed `DL` directly as retrieving data layout from CS by
  checking the called function is not reliable. Under indirect function
  call, there is no called function.

Subscribers: jholewinski, hiraditya, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D65468

Added:
    llvm/trunk/test/CodeGen/NVPTX/bug41651.ll
Modified:
    llvm/trunk/lib/Target/NVPTX/NVPTXISelLowering.cpp

Modified: llvm/trunk/lib/Target/NVPTX/NVPTXISelLowering.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/NVPTX/NVPTXISelLowering.cpp?rev=367349&r1=367348&r2=367349&view=diff
==============================================================================
--- llvm/trunk/lib/Target/NVPTX/NVPTXISelLowering.cpp (original)
+++ llvm/trunk/lib/Target/NVPTX/NVPTXISelLowering.cpp Tue Jul 30 12:52:01 2019
@@ -1291,8 +1291,8 @@ std::string NVPTXTargetLowering::getProt
       O << ".param .b" << size << " _";
     } else if (isa<PointerType>(retTy)) {
       O << ".param .b" << PtrVT.getSizeInBits() << " _";
-    } else if (retTy->isAggregateType() || retTy->isVectorTy() || retTy->isIntegerTy(128)) {
-      auto &DL = CS.getCalledFunction()->getParent()->getDataLayout();
+    } else if (retTy->isAggregateType() || retTy->isVectorTy() ||
+               retTy->isIntegerTy(128)) {
       O << ".param .align " << retAlignment << " .b8 _["
         << DL.getTypeAllocSize(retTy) << "]";
     } else {

Added: llvm/trunk/test/CodeGen/NVPTX/bug41651.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/NVPTX/bug41651.ll?rev=367349&view=auto
==============================================================================
--- llvm/trunk/test/CodeGen/NVPTX/bug41651.ll (added)
+++ llvm/trunk/test/CodeGen/NVPTX/bug41651.ll Tue Jul 30 12:52:01 2019
@@ -0,0 +1,13 @@
+; RUN: llc -filetype=asm -o - %s | FileCheck %s
+target datalayout = "e-i64:64-i128:128-v16:16-v32:32-n16:32:64"
+target triple = "nvptx64-nvidia-cuda"
+
+%func = type { i32 (i32, i32)** }
+
+; CHECK: foo
+; CHECK: call
+; CHECK: ret
+define void @foo() {
+  %call = call %func undef(i32 0, i32 1)
+  ret void
+}




More information about the llvm-commits mailing list