summaryrefslogtreecommitdiff
path: root/test/CodeGen
diff options
context:
space:
mode:
authorEli Bendersky <eliben@google.com>2014-03-31 15:56:26 +0000
committerEli Bendersky <eliben@google.com>2014-03-31 15:56:26 +0000
commit416a0e993f4ec93285b59f6af698a7edb5c5535f (patch)
tree4fe9bfca432308899cebc0f587ab0c10fdc91066 /test/CodeGen
parent93b3fcae2832c381a7790b04fddcafe83d7003a7 (diff)
downloadllvm-416a0e993f4ec93285b59f6af698a7edb5c5535f.tar.gz
llvm-416a0e993f4ec93285b59f6af698a7edb5c5535f.tar.bz2
llvm-416a0e993f4ec93285b59f6af698a7edb5c5535f.tar.xz
Fix for PR19099 - NVPTX produces invalid symbol names.
This is a more thorough fix for the issue than r203483. An IR pass will run before NVPTX codegen to make sure there are no invalid symbol names that can't be consumed by the ptxas assembler. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@205212 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/CodeGen')
-rw-r--r--test/CodeGen/NVPTX/symbol-naming.ll27
1 files changed, 25 insertions, 2 deletions
diff --git a/test/CodeGen/NVPTX/symbol-naming.ll b/test/CodeGen/NVPTX/symbol-naming.ll
index b7f1cfdc5b..bd1333f1c4 100644
--- a/test/CodeGen/NVPTX/symbol-naming.ll
+++ b/test/CodeGen/NVPTX/symbol-naming.ll
@@ -1,8 +1,31 @@
; RUN: llc < %s -march=nvptx -mcpu=sm_20 | FileCheck %s --check-prefix=PTX32
; RUN: llc < %s -march=nvptx64 -mcpu=sm_20 | FileCheck %s --check-prefix=PTX64
-@.str = private unnamed_addr constant [6 x i8] c"%d %f\00", align 1
-@.str.again = private unnamed_addr constant [6 x i8] c"%d %f\00", align 1
+; Verify that the NVPTX target removes invalid symbol names prior to emitting
+; PTX.
; PTX32-NOT: .str
; PTX64-NOT: .str
+
+; PTX32-DAG: _$_str1
+; PTX32-DAG: _$_str
+
+; PTX64-DAG: _$_str1
+; PTX64-DAG: _$_str
+
+target datalayout = "e-i64:64-v16:16-v32:32-n16:32:64"
+target triple = "nvptx64-unknown-unknown"
+
+
+@.str = private unnamed_addr constant [13 x i8] c"%d %f %c %d\0A\00", align 1
+@_$_str = private unnamed_addr constant [13 x i8] c"%d %f %c %d\0A\00", align 1
+
+
+; Function Attrs: nounwind
+define void @foo(i32 %a, float %b, i8 signext %c, i32 %e) {
+entry:
+ %call = call i32 (i8*, ...)* @printf(i8* getelementptr inbounds ([13 x i8]* @.str, i32 0, i32 0))
+ ret void
+}
+
+declare i32 @printf(i8*, ...)