From ae272d718e882b18258a587ce111a4150d761b5e Mon Sep 17 00:00:00 2001 From: David Majnemer Date: Thu, 31 Mar 2016 21:29:57 +0000 Subject: [NVPTX] Infer __nvvm_reflect as nounwind, readnone This patch simply mirrors the attributes we give to @llvm.nvvm.reflect to the __nvvm_reflect libdevice call. This shaves about 30% of the code in libdevice away because of CSE opportunities. It's also helps us figure out that libdevice implementations of transcendental functions don't have side-effects. llvm-svn: 265060 --- llvm/test/Transforms/InferFunctionAttrs/annotate.ll | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'llvm/test') diff --git a/llvm/test/Transforms/InferFunctionAttrs/annotate.ll b/llvm/test/Transforms/InferFunctionAttrs/annotate.ll index 1cb7ab137c0..8ac45df6e7e 100644 --- a/llvm/test/Transforms/InferFunctionAttrs/annotate.ll +++ b/llvm/test/Transforms/InferFunctionAttrs/annotate.ll @@ -1,6 +1,7 @@ ; RUN: opt < %s -inferattrs -S | FileCheck %s ; RUN: opt < %s -passes=inferattrs -S | FileCheck %s ; RUN: opt < %s -mtriple=x86_64-apple-macosx10.8.0 -inferattrs -S | FileCheck -check-prefix=CHECK-POSIX %s +; RUN: opt < %s -mtriple=nvptx -inferattrs -S | FileCheck -check-prefix=CHECK-NVPTX %s declare i8* @fopen(i8*, i8*) ; CHECK: declare noalias i8* @fopen(i8* nocapture readonly, i8* nocapture readonly) [[G0:#[0-9]]] @@ -33,3 +34,7 @@ declare i32 @gettimeofday(i8*, i8*) ; CHECK: attributes [[G1]] = { nounwind readonly } ; CHECK-POSIX: attributes [[G0]] = { nounwind } ; CHECK-POSIX: attributes [[G2]] = { argmemonly } + +declare i32 @__nvvm_reflect(i8*) +; CHECK-NVPTX: declare i32 @__nvvm_reflect(i8*) [[G0:#[0-9]+]] +; CHECK-NVPTX: attributes [[G0]] = { nounwind readnone } -- cgit v1.2.3