diff options
author | Michael Gottesman <mgottesman@apple.com> | 2013-06-27 00:25:01 +0000 |
---|---|---|
committer | Michael Gottesman <mgottesman@apple.com> | 2013-06-27 00:25:01 +0000 |
commit | 2253a2f52f3c46ae75cd05f5885acb987bd1d6b6 (patch) | |
tree | 483f06fa8a9b2981c441c49dde73b45eb724c03d /test/Assembler | |
parent | 9367c79e62307421f28ba92174f3792a6360f37b (diff) | |
download | external_llvm-2253a2f52f3c46ae75cd05f5885acb987bd1d6b6.zip external_llvm-2253a2f52f3c46ae75cd05f5885acb987bd1d6b6.tar.gz external_llvm-2253a2f52f3c46ae75cd05f5885acb987bd1d6b6.tar.bz2 |
Added support for the Builtin attribute.
The Builtin attribute is an attribute that can be placed on function call site that signal that even though a function is declared as being a builtin,
rdar://problem/13727199
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185049 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/Assembler')
-rw-r--r-- | test/Assembler/attribute-builtin.ll | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/test/Assembler/attribute-builtin.ll b/test/Assembler/attribute-builtin.ll new file mode 100644 index 0000000..0b322aa --- /dev/null +++ b/test/Assembler/attribute-builtin.ll @@ -0,0 +1,52 @@ + +; Make sure that llvm-as/llvm-dis properly assembly/disassembly the 'builtin' +; attribute. +; +; rdar://13727199 + +; RUN: llvm-as -disable-verify < %s | \ +; llvm-dis -disable-verify | \ +; llvm-as -disable-verify | \ +; llvm-dis -disable-verify | \ +; FileCheck -check-prefix=ASSEMBLES %s + +; CHECK-ASSEMBLES: declare i8* @foo(i8*) [[NOBUILTIN:#[0-9]+]] +; CHECK-ASSEMBLES: call i8* @foo(i8* %x) [[BUILTIN:#[0-9]+]] +; CHECK-ASSEMBLES: attributes [[NOBUILTIN]] = { nobuiltin } +; CHECK-ASSEMBLES: attributes [[BUILTIN]] = { builtin } + +declare i8* @foo(i8*) #1 +define i8* @bar(i8* %x) { + %y = call i8* @foo(i8* %x) #0 + ret i8* %y +} + +; Make sure that we do not accept the 'builtin' attribute on function +; definitions, function declarations, and on call sites that call functions +; which do not have nobuiltin on them. +; rdar://13727199 + +; RUN: not llvm-as <%s 2>&1 | FileCheck -check-prefix=BAD %s + +; CHECK-BAD: Attribute 'builtin' can only be used in a call to a function with the 'nobuiltin' attribute. +; CHECK-BAD-NEXT: %y = call i8* @lar(i8* %x) #1 +; CHECK-BAD: Attribute 'builtin' can only be applied to a callsite. +; CHECK-BAD-NEXT: i8* (i8*)* @car +; CHECK-BAD: Attribute 'builtin' can only be applied to a callsite. +; CHECK-BAD-NEXT: i8* (i8*)* @mar + +declare i8* @lar(i8*) + +define i8* @har(i8* %x) { + %y = call i8* @lar(i8* %x) #0 + ret i8* %y +} + +define i8* @car(i8* %x) #0 { + ret i8* %x +} + +declare i8* @mar(i8*) #0 + +attributes #0 = { builtin } +attributes #1 = { nobuiltin } |