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)16inline int xglobWeak (int i) { 17 return i*2; 18 } 19 inline int xextWeak(int) __attribute__((weak)); xextWeak(int i)20extern inline int xextWeak (int i) { 21 return i*4; 22 } 23 int xWeaknoinline(int) __attribute__((weak)); xWeaknoinline(int i)24int xWeaknoinline(int i) { 25 return i*8; 26 } 27 int xWeakextnoinline(int) __attribute__((weak)); xWeakextnoinline(int i)28extern int xWeakextnoinline(int i) { 29 return i*16; 30 } xglobnoWeak(int i)31inline int xglobnoWeak (int i) { 32 return i*32; 33 } xstatnoWeak(int i)34static inline int xstatnoWeak (int i) { 35 return i*64; 36 } xextnoWeak(int i)37extern inline int xextnoWeak (int i) { 38 return i*128; 39 } j(int y)40int j(int y) { 41 return xglobnoWeak(y)+xstatnoWeak(y)+xextnoWeak(y)+ 42 xglobWeak(y)+xextWeak(y)+ 43 xWeakextnoinline(y)+xWeaknoinline(y); 44 } 45