[cfe-commits] r149594 - in /cfe/trunk: lib/AST/ASTContext.cpp test/CodeGen/inline.c test/CodeGen/inline2.c

Anton Yartsev anton.yartsev at gmail.com
Wed Feb 1 22:06:34 PST 2012


Author: ayartsev
Date: Thu Feb  2 00:06:34 2012
New Revision: 149594

URL: http://llvm.org/viewvc/llvm-project?rev=149594&view=rev
Log:
r149587 reverted

Modified:
    cfe/trunk/lib/AST/ASTContext.cpp
    cfe/trunk/test/CodeGen/inline.c
    cfe/trunk/test/CodeGen/inline2.c

Modified: cfe/trunk/lib/AST/ASTContext.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/ASTContext.cpp?rev=149594&r1=149593&r2=149594&view=diff
==============================================================================
--- cfe/trunk/lib/AST/ASTContext.cpp (original)
+++ cfe/trunk/lib/AST/ASTContext.cpp Thu Feb  2 00:06:34 2012
@@ -6673,9 +6673,7 @@
     // always be deferred.  Normal inline functions can be deferred in C99/C++.
     // Implicit template instantiations can also be deferred in C++.
     if (Linkage == GVA_Internal  || Linkage == GVA_C99Inline ||
-        Linkage == GVA_CXXInline ||
-        (Linkage == GVA_StrongExternal && FD->isInlineSpecified()) ||
-        Linkage == GVA_TemplateInstantiation)
+        Linkage == GVA_CXXInline || Linkage == GVA_TemplateInstantiation)
       return false;
     return true;
   }

Modified: cfe/trunk/test/CodeGen/inline.c
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/inline.c?rev=149594&r1=149593&r2=149594&view=diff
==============================================================================
--- cfe/trunk/test/CodeGen/inline.c (original)
+++ cfe/trunk/test/CodeGen/inline.c Thu Feb  2 00:06:34 2012
@@ -1,8 +1,10 @@
 // RUN: echo "GNU89 tests:"
 // RUN: %clang %s -O1 -emit-llvm -S -o %t -std=gnu89
+// RUN: grep "define available_externally i32 @ei()" %t
 // RUN: grep "define i32 @foo()" %t
 // RUN: grep "define i32 @bar()" %t
-// RUN: not grep unreferenced %t
+// RUN: grep "define void @unreferenced1()" %t
+// RUN: not grep unreferenced2 %t
 // RUN: grep "define void @gnu_inline()" %t
 // RUN: grep "define available_externally void @gnu_ei_inline()" %t
 // RUN: grep "define i32 @test1" %t
@@ -17,7 +19,8 @@
 // RUN: grep "define i32 @ei()" %t
 // RUN: grep "define available_externally i32 @foo()" %t
 // RUN: grep "define i32 @bar()" %t
-// RUN: not grep unreferenced %t
+// RUN: not grep unreferenced1 %t
+// RUN: grep "define void @unreferenced2()" %t
 // RUN: grep "define void @gnu_inline()" %t
 // RUN: grep "define available_externally void @gnu_ei_inline()" %t
 // RUN: grep "define i32 @test1" %t
@@ -50,7 +53,6 @@
 extern __inline void unreferenced2() {}
 
 __inline __attribute((__gnu_inline__)) void gnu_inline() {}
-void test_gnu_inline() { gnu_inline(); }
 
 // PR3988
 extern __inline __attribute__((gnu_inline)) void gnu_ei_inline() {}
@@ -69,7 +71,6 @@
 // PR3989
 extern __inline void test3() __attribute__((gnu_inline));
 __inline void __attribute__((gnu_inline)) test3() {}
-void test_test3() { test3(); }
 
 extern int test4(void);
 extern __inline __attribute__ ((__gnu_inline__)) int test4(void)
@@ -91,10 +92,11 @@
 
 __inline int test6() { return 0; }
 extern int test6();
-void test_test6() { test6(); }
 
-// PR10657
-extern __inline void test7() {}
+
+// No PR#, but this once crashed clang in C99 mode due to buggy extern inline
+// redeclaration detection.
+void test7() { }
 void test7();
 
 // PR11062; the fact that the function is named strlcpy matters here.

Modified: cfe/trunk/test/CodeGen/inline2.c
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/inline2.c?rev=149594&r1=149593&r2=149594&view=diff
==============================================================================
--- cfe/trunk/test/CodeGen/inline2.c (original)
+++ cfe/trunk/test/CodeGen/inline2.c Thu Feb  2 00:06:34 2012
@@ -1,63 +1,61 @@
-// RUN: echo "GNU89 tests:"
-// RUN: %clang_cc1 -O1 -triple i386-apple-darwin9 -emit-llvm -o %t -std=gnu89 %s
-// RUN: grep "define i32 @f0()" %t
-// RUN: grep "define i32 @f1()" %t
-// RUN: grep "define i32 @f2()" %t
-// RUN: grep "define i32 @f3()" %t
-// RUN: grep "define i32 @f5()" %t
-// RUN: grep "define i32 @f6()" %t
-// RUN: grep "define i32 @f7()" %t
-// RUN: grep "define i32 @fA()" %t
-// RUN: grep "define available_externally i32 @f4()" %t
-// RUN: grep "define available_externally i32 @f8()" %t
-// RUN: grep "define available_externally i32 @f9()" %t
-
-// RUN: echo "C99 tests:"
-// RUN: %clang_cc1 -O1 -triple i386-apple-darwin9 -emit-llvm -o %t -std=c99 %s
-// RUN: grep "define i32 @f0()" %t
-// RUN: grep "define i32 @f1()" %t
-// RUN: grep "define i32 @f2()" %t
-// RUN: grep "define i32 @f3()" %t
-// RUN: grep "define i32 @f5()" %t
-// RUN: grep "define i32 @f6()" %t
-// RUN: grep "define i32 @f7()" %t
-// RUN: grep "define available_externally i32 @fA()" %t
-// RUN: grep "define i32 @f4()" %t
-// RUN: grep "define i32 @f8()" %t
-// RUN: grep "define i32 @f9()" %t
+// RUN: %clang_cc1 -O1 -std=gnu89 -triple i386-apple-darwin9 -emit-llvm %s -o - | FileCheck -check-prefix GNU89 %s
+// RUN: %clang_cc1 -O1 -std=c99 -triple i386-apple-darwin9 -emit-llvm %s -o - | FileCheck -check-prefix C99 %s
 
+// CHECK-GNU89: define i32 @f0()
+// CHECK-C99: define i32 @f0()
 int f0(void);
 int f0(void) { return 0; }
 
+// CHECK-GNU89: define i32 @f1()
+// CHECK-C99: define i32 @f1()
 inline int f1(void);
 int f1(void) { return 0; }
 
+// CHECK-GNU89: define i32 @f2()
+// CHECK-C99: define i32 @f2()
 int f2(void);
 inline int f2(void) { return 0; }
 
+// CHECK-GNU89: define i32 @f3()
+// CHECK-C99: define i32 @f3()
 extern inline int f3(void);
 int f3(void) { return 0; }
 
+// CHECK-GNU89: define i32 @f5()
+// CHECK-C99: define i32 @f5()
 extern inline int f5(void);
 inline int f5(void) { return 0; }
 
+// CHECK-GNU89: define i32 @f6()
+// CHECK-C99: define i32 @f6()
 inline int f6(void);
 extern inline int f6(void) { return 0; }
 
+// CHECK-GNU89: define i32 @f7()
+// CHECK-C99: define i32 @f7()
 extern inline int f7(void);
 extern int f7(void) { return 0; }
 
+// CHECK-GNU89: define i32 @fA()
 inline int fA(void) { return 0; }
 
+// CHECK-GNU89: define available_externally i32 @f4()
+// CHECK-C99: define i32 @f4()
 int f4(void);
 extern inline int f4(void) { return 0; }
 
+// CHECK-GNU89: define available_externally i32 @f8()
+// CHECK-C99: define i32 @f8()
 extern int f8(void);
 extern inline int f8(void) { return 0; }
 
+// CHECK-GNU89: define available_externally i32 @f9()
+// CHECK-C99: define i32 @f9()
 extern inline int f9(void);
 extern inline int f9(void) { return 0; }
 
+// CHECK-C99: define available_externally i32 @fA()
+
 int test_all() { 
   return f0() + f1() + f2() + f3() + f4() + f5() + f6() + f7() + f8() + f9() 
     + fA();





More information about the cfe-commits mailing list