1 | // For these next two tests when optimized we should omit the leaf frame |
2 | // pointer, for unoptimized we should have a leaf frame pointer. |
3 | // RUN: %clang -### -target i386-pc-linux-gnu -S -O1 %s 2>&1 | \ |
4 | // RUN: FileCheck --check-prefix=LINUX-OPT %s |
5 | // LINUX-OPT: "-momit-leaf-frame-pointer" |
6 | |
7 | // RUN: %clang -### -target i386-pc-linux-gnu -S %s 2>&1 | \ |
8 | // RUN: FileCheck --check-prefix=LINUX %s |
9 | // LINUX-NOT: "-momit-leaf-frame-pointer" |
10 | |
11 | // CloudABI follows the same rules as Linux. |
12 | // RUN: %clang -### -target x86_64-unknown-cloudabi -S -O1 %s 2>&1 | \ |
13 | // RUN: FileCheck --check-prefix=CLOUDABI-OPT %s |
14 | // CLOUDABI-OPT: "-momit-leaf-frame-pointer" |
15 | |
16 | // RUN: %clang -### -target x86_64-unknown-cloudabi -S %s 2>&1 | \ |
17 | // RUN: FileCheck --check-prefix=CLOUDABI %s |
18 | // CLOUDABI-NOT: "-momit-leaf-frame-pointer" |
19 | |
20 | // NetBSD follows the same rules as Linux. |
21 | // RUN: %clang -### -target x86_64-unknown-netbsd -S -O1 %s 2>&1 | \ |
22 | // RUN: FileCheck --check-prefix=NETBSD-OPT %s |
23 | // NETBSD-OPT: "-momit-leaf-frame-pointer" |
24 | |
25 | // RUN: %clang -### -target x86_64-unknown-netbsd -S %s 2>&1 | \ |
26 | // RUN: FileCheck --check-prefix=NETBSD %s |
27 | // NETBSD-NOT: "-momit-leaf-frame-pointer" |
28 | |
29 | // Darwin disables omitting the leaf frame pointer even under optimization |
30 | // unless the command lines are given. |
31 | // RUN: %clang -### -target i386-apple-darwin -S %s 2>&1 | \ |
32 | // RUN: FileCheck --check-prefix=DARWIN %s |
33 | // DARWIN: "-mdisable-fp-elim" |
34 | |
35 | // RUN: %clang -### -target i386-apple-darwin -S -O1 %s 2>&1 | \ |
36 | // RUN: FileCheck --check-prefix=DARWIN-OPT %s |
37 | // DARWIN-OPT-NOT: "-momit-leaf-frame-pointer" |
38 | |
39 | // RUN: %clang -### -target i386-darwin -S -fomit-frame-pointer %s 2>&1 | \ |
40 | // RUN: FileCheck --check-prefix=OMIT_ALL %s |
41 | // OMIT_ALL-NOT: "-mdisable-fp-elim" |
42 | |
43 | // RUN: %clang -### -target i386-darwin -S -momit-leaf-frame-pointer %s 2>&1 | \ |
44 | // RUN: FileCheck --check-prefix=OMIT_LEAF %s |
45 | // OMIT_LEAF: "-momit-leaf-frame-pointer" |
46 | |
47 | // RUN: %clang -### -target armv7s-apple-ios -fomit-frame-pointer %s 2>&1 | \ |
48 | // RUN: FileCheck --check-prefix=WARN-OMIT-7S %s |
49 | // WARN-OMIT-7S: warning: optimization flag '-fomit-frame-pointer' is not supported for target 'armv7s' |
50 | // WARN-OMIT-7S: "-mdisable-fp-elim" |
51 | // WARN-OMIT-7S-NOT: "-momit-leaf-frame-pointer" |
52 | |
53 | // RUN: %clang -### -target armv7k-apple-watchos -fomit-frame-pointer %s 2>&1 | \ |
54 | // RUN: FileCheck --check-prefix=WARN-OMIT-7K %s |
55 | // WARN-OMIT-7K: warning: optimization flag '-fomit-frame-pointer' is not supported for target 'armv7k' |
56 | // WARN-OMIT-7K: "-mdisable-fp-elim" |
57 | // WARN-OMIT-7K-NOT: "-momit-leaf-frame-pointer" |
58 | |
59 | // RUN: %clang -### -target armv7s-apple-ios8.0 -momit-leaf-frame-pointer %s 2>&1 | \ |
60 | // RUN: FileCheck --check-prefix=WARN-OMIT-LEAF-7S %s |
61 | // WARN-OMIT-LEAF-7S-NOT: warning: optimization flag '-momit-leaf-frame-pointer' is not supported for target 'armv7s' |
62 | // WARN-OMIT-LEAF-7S: "-mdisable-fp-elim" |
63 | // WARN-OMIT-LEAF-7S: "-momit-leaf-frame-pointer" |
64 | |
65 | // On the PS4, we default to omitting the frame pointer on leaf functions |
66 | // (OMIT_LEAF check line is above) |
67 | // RUN: %clang -### -target x86_64-scei-ps4 -S %s 2>&1 | \ |
68 | // RUN: FileCheck --check-prefix=OMIT_LEAF %s |
69 | // RUN: %clang -### -target x86_64-scei-ps4 -S -O2 %s 2>&1 | \ |
70 | // RUN: FileCheck --check-prefix=OMIT_LEAF %s |
71 | |
72 | void f0() {} |
73 | void f1() { f0(); } |
74 | |