set the linkage of an inline function according to its language rules.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69030 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/test/CodeGen/inline.c b/test/CodeGen/inline.c
new file mode 100644
index 0000000..8360896
--- /dev/null
+++ b/test/CodeGen/inline.c
@@ -0,0 +1,29 @@
+// RUN: clang %s -emit-llvm -S -o %t -std=c89 &&
+// RUN: grep "define available_externally i32 @ei()" %t &&
+// RUN: grep "define i32 @foo()" %t &&
+// RUN: grep "define i32 @bar()" %t &&
+// RUN: grep "define void @unreferenced()" %t &&
+
+// RUN: clang %s -emit-llvm -S -o %t -std=c99 &&
+// RUN: grep "define available_externally i32 @ei()" %t &&
+// RUN: grep "define available_externally i32 @foo()" %t &&
+// RUN: grep "define i32 @bar()" %t &&
+// RUN: grep "define available_externally void @unreferenced()" %t &&
+
+// RUN: clang %s -emit-llvm -S -o %t -std=c++98 &&
+// RUN: grep "define available_externally i32 @_Z2eiv()" %t &&
+// RUN: grep "define linkonce_odr i32 @_Z3foov()" %t &&
+// RUN: grep "define i32 @_Z3barv()" %t &&
+// RUN: grep "define linkonce_odr void @_Z12unreferencedv()" %t
+
+extern inline int ei() { return 123; }
+
+inline int foo() {
+  return ei();
+}
+
+int bar() { return foo(); }
+
+
+inline void unreferenced() {}
+