diff options
author | Eli Bendersky <eliben@google.com> | 2014-03-31 15:56:26 +0000 |
---|---|---|
committer | Eli Bendersky <eliben@google.com> | 2014-03-31 15:56:26 +0000 |
commit | 416a0e993f4ec93285b59f6af698a7edb5c5535f (patch) | |
tree | 4fe9bfca432308899cebc0f587ab0c10fdc91066 /test/CodeGen | |
parent | 93b3fcae2832c381a7790b04fddcafe83d7003a7 (diff) | |
download | llvm-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.ll | 27 |
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*, ...) |