@@ -3048,7 +3048,7 @@ pushdecl (tree x)
unless they have initializers (which generate code). */
if (current_function_decl
&& (!VAR_OR_FUNCTION_DECL_P (x)
- || DECL_INITIAL (x) || !DECL_EXTERNAL (x)))
+ || DECL_INITIAL (x) || !TREE_PUBLIC (x)))
DECL_CONTEXT (x) = current_function_decl;
/* Anonymous decls are just inserted in the scope. */
new file mode 100644
@@ -0,0 +1,50 @@
+/* Test inline functions declared in inner scopes. Bug 93072. */
+/* { dg-do compile } */
+/* { dg-options "" } */
+
+void
+inline_1 (void)
+{
+}
+
+void
+inline_2 (void)
+{
+}
+
+static void
+inline_static_1 (void)
+{
+}
+
+static void
+inline_static_2 (void)
+{
+}
+
+static void
+test (void)
+{
+ inline void inline_1 (void);
+ if (inline_1 == 0) ;
+ extern inline void inline_2 (void);
+ if (inline_2 == 0) ;
+ inline void inline_3 (void);
+ if (inline_3 == 0) ;
+ extern inline void inline_4 (void);
+ if (inline_4 == 0) ;
+ inline void inline_static_1 (void);
+ if (inline_static_1 == 0) ;
+ extern inline void inline_static_2 (void);
+ if (inline_static_2 == 0) ;
+}
+
+void
+inline_3 (void)
+{
+}
+
+void
+inline_4 (void)
+{
+}
new file mode 100644
@@ -0,0 +1,50 @@
+/* Test inline functions declared in inner scopes. Bug 93072. */
+/* { dg-do compile } */
+/* { dg-options "-fgnu89-inline" } */
+
+void
+inline_1 (void)
+{
+}
+
+void
+inline_2 (void)
+{
+}
+
+static void
+inline_static_1 (void)
+{
+}
+
+static void
+inline_static_2 (void)
+{
+}
+
+static void
+test (void)
+{
+ inline void inline_1 (void);
+ if (inline_1 == 0) ;
+ extern inline void inline_2 (void);
+ if (inline_2 == 0) ;
+ inline void inline_3 (void);
+ if (inline_3 == 0) ;
+ extern inline void inline_4 (void);
+ if (inline_4 == 0) ;
+ inline void inline_static_1 (void);
+ if (inline_static_1 == 0) ;
+ extern inline void inline_static_2 (void);
+ if (inline_static_2 == 0) ;
+}
+
+void
+inline_3 (void)
+{
+}
+
+void
+inline_4 (void)
+{
+}