Index: lib/Target/NVPTX/MCTargetDesc/NVPTXMCAsmInfo.cpp =================================================================== --- lib/Target/NVPTX/MCTargetDesc/NVPTXMCAsmInfo.cpp +++ lib/Target/NVPTX/MCTargetDesc/NVPTXMCAsmInfo.cpp @@ -41,6 +41,9 @@ // PTX does not allow .align on functions. HasFunctionAlignment = false; HasDotTypeDotSizeDirective = false; + // PTX does not allow .hidden or .protected + HiddenDeclarationVisibilityAttr = HiddenVisibilityAttr = MCSA_Invalid; + ProtectedVisibilityAttr = MCSA_Invalid; Data8bitsDirective = " .b8 "; Data16bitsDirective = " .b16 "; Index: test/CodeGen/NVPTX/global-visibility.ll =================================================================== --- /dev/null +++ test/CodeGen/NVPTX/global-visibility.ll @@ -0,0 +1,16 @@ +; RUN: llc < %s -march=nvptx -mcpu=sm_20 | FileCheck %s + +; PTX does not support .hidden or .protected. +; Make sure we do not emit them. + +define hidden void @f_hidden() { + ret void +} +; CHECK-NOT: .hidden +; CHECK: .visible .func f_hidden + +define protected void @f_protected() { + ret void +} +; CHECK-NOT: .protected +; CHECK: .visible .func f_protected