12873aee1774a2ae731d6cc5c5ee05ba82780dc98Eli Friedman// RUN: %clang_cc1 -triple x86_64-apple-macosx10.7.0 %s -emit-llvm -o - | FileCheck %s
2dd0cb22bd62e1e835327f478a2dbf0b8fa439713Daniel Dunbar
3dd0cb22bd62e1e835327f478a2dbf0b8fa439713Daniel Dunbarvoid t1() __attribute__((naked));
4dd0cb22bd62e1e835327f478a2dbf0b8fa439713Daniel Dunbar
52873aee1774a2ae731d6cc5c5ee05ba82780dc98Eli Friedman// Basic functionality check
62873aee1774a2ae731d6cc5c5ee05ba82780dc98Eli Friedman// (Note that naked needs to imply noinline to work properly.)
7c3af6799d4c8ec4b338236e4361c0795e9af890aBill Wendling// CHECK: define void @t1() [[NAKED:#[0-9]+]] {
8dd0cb22bd62e1e835327f478a2dbf0b8fa439713Daniel Dunbarvoid t1()
9dd0cb22bd62e1e835327f478a2dbf0b8fa439713Daniel Dunbar{
10dd0cb22bd62e1e835327f478a2dbf0b8fa439713Daniel Dunbar}
11dd0cb22bd62e1e835327f478a2dbf0b8fa439713Daniel Dunbar
122873aee1774a2ae731d6cc5c5ee05ba82780dc98Eli Friedman// Make sure this doesn't explode in the verifier.
132873aee1774a2ae731d6cc5c5ee05ba82780dc98Eli Friedman// (It doesn't really make sense, but it isn't invalid.)
14c3af6799d4c8ec4b338236e4361c0795e9af890aBill Wendling// CHECK: define void @t2() [[NAKED]] {
152873aee1774a2ae731d6cc5c5ee05ba82780dc98Eli Friedman__attribute((naked, always_inline)) void t2()  {
162873aee1774a2ae731d6cc5c5ee05ba82780dc98Eli Friedman}
17f7a9da053f5bd6c18450c1796d953b42c3b7ad3aBill Wendling
18c3af6799d4c8ec4b338236e4361c0795e9af890aBill Wendling// CHECK: attributes [[NAKED]] = { naked noinline nounwind{{.*}} }
19