Home | History | Annotate | Download | only in CodeGen
      1 // RUN: %clang_cc1 -triple x86_64-apple-macosx10.7.0 %s -emit-llvm -o - | FileCheck %s
      2 
      3 void t1() __attribute__((naked));
      4 
      5 // Basic functionality check
      6 // (Note that naked needs to imply noinline to work properly.)
      7 // CHECK: define void @t1() [[NAKED:#[0-9]+]] {
      8 void t1()
      9 {
     10 }
     11 
     12 // Make sure this doesn't explode in the verifier.
     13 // (It doesn't really make sense, but it isn't invalid.)
     14 // CHECK: define void @t2() [[NAKED]] {
     15 __attribute((naked, always_inline)) void t2() {
     16 }
     17 
     18 // Make sure not to generate prolog or epilog for naked functions.
     19 __attribute((naked)) void t3(int x) {
     20 // CHECK: define void @t3(i32)
     21 // CHECK-NOT: alloca
     22 // CHECK-NOT: store
     23 // CHECK: unreachable
     24 }
     25 
     26 // CHECK: attributes [[NAKED]] = { naked noinline nounwind{{.*}} }
     27