diff --git a/llvm/lib/Target/NVPTX/NVPTXISelLowering.cpp b/llvm/lib/Target/NVPTX/NVPTXISelLowering.cpp --- a/llvm/lib/Target/NVPTX/NVPTXISelLowering.cpp +++ b/llvm/lib/Target/NVPTX/NVPTXISelLowering.cpp @@ -2617,7 +2617,14 @@ std::string ParamSym; raw_string_ostream ParamStr(ParamSym); - ParamStr << DAG.getMachineFunction().getName(); + if (StringRef FnName = DAG.getMachineFunction().getName(); !FnName.empty()) { + ParamStr << FnName; + } else { + SmallString<128> NameBuf; + getTargetMachine().getObjFileLowering()->getNameWithPrefix( + NameBuf, &DAG.getMachineFunction().getFunction(), getTargetMachine()); + ParamStr << NameBuf; + } if (idx < 0) ParamStr << "_vararg"; diff --git a/llvm/test/CodeGen/NVPTX/anonymous-fn-param.ll b/llvm/test/CodeGen/NVPTX/anonymous-fn-param.ll new file mode 100644 --- /dev/null +++ b/llvm/test/CodeGen/NVPTX/anonymous-fn-param.ll @@ -0,0 +1,22 @@ +; RUN: llc < %s -march=nvptx64 -mcpu=sm_20 | FileCheck %s +; RUN: %if ptxas %{ llc < %s -march=nvptx64 -mcpu=sm_20 | %ptxas-verify %} + +; CHECK: .func (.param .b32 func_retval0) __unnamed_1( +; CHECK-NEXT: .param .b32 __unnamed_1_param_0 +; CHECK: ld.param.u32 {{%r[0-9]+}}, [__unnamed_1_param_0]; + +; CHECK: .func (.param .b32 func_retval0) __unnamed_2( +; CHECK-NEXT: .param .b32 __unnamed_2_param_0 +; CHECK: ld.param.u32 {{%r[0-9]+}}, [__unnamed_2_param_0]; + +define internal i32 @0(i32 %a) { +entry: + %r = add i32 %a, 1 + ret i32 %r +} + +define internal i32 @1(i32 %a) { +entry: + %r = add i32 %a, 1 + ret i32 %r +}