• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // RUN: %llvmgxx %s -S -O0 -o - | grep define | \
2 // RUN:   grep xglobWeak | grep linkonce | count 1
3 // RUN: %llvmgxx %s -S -O0 -o - | grep define | \
4 // RUN:   grep xextWeak | grep linkonce | count 1
5 // RUN: %llvmgxx %s -S -O0 -o - | grep define | \
6 // RUN:   grep xWeaknoinline | grep weak | count 1
7 // RUN: %llvmgxx %s -S -O0 -o - | grep define | \
8 // RUN:   grep xWeakextnoinline | grep weak | count 1
9 // RUN: %llvmgxx %s -S -O0 -o - | grep define | \
10 // RUN:   grep xglobnoWeak | grep linkonce | count 1
11 // RUN: %llvmgxx %s -S -O0 -o - | grep define | \
12 // RUN:   grep xstatnoWeak | grep internal | count 1
13 // RUN: %llvmgxx %s -S -O0 -o - | grep define | \
14 // RUN:   grep xextnoWeak | grep linkonce | count 1
15 inline int xglobWeak(int) __attribute__((weak));
xglobWeak(int i)16 inline int xglobWeak (int i) {
17   return i*2;
18 }
19 inline int xextWeak(int) __attribute__((weak));
xextWeak(int i)20 extern  inline int xextWeak (int i) {
21   return i*4;
22 }
23 int xWeaknoinline(int) __attribute__((weak));
xWeaknoinline(int i)24 int xWeaknoinline(int i) {
25   return i*8;
26 }
27 int xWeakextnoinline(int) __attribute__((weak));
xWeakextnoinline(int i)28 extern int xWeakextnoinline(int i) {
29   return i*16;
30 }
xglobnoWeak(int i)31 inline int xglobnoWeak (int i) {
32   return i*32;
33 }
xstatnoWeak(int i)34 static inline int xstatnoWeak (int i) {
35   return i*64;
36 }
xextnoWeak(int i)37 extern  inline int xextnoWeak (int i) {
38   return i*128;
39 }
j(int y)40 int j(int y) {
41   return xglobnoWeak(y)+xstatnoWeak(y)+xextnoWeak(y)+
42         xglobWeak(y)+xextWeak(y)+
43         xWeakextnoinline(y)+xWeaknoinline(y);
44 }
45