+2004-08-17 Mark Mitchell <mark@codesourcery.com>
+
+ PR c++/15871
+ * doc/invoke.texi (-fkeep-inline-functions): Update documentation.
+
2004-08-17 Robert Bowdidge <bowdidge@apple.com>
* config/rs6000/x-darwin: Add -mdynamic-no-pic to gcc build flags.
2004-08-17 Mark Mitchell <mark@codesourcery.com>
+ PR c++/15871
+ * semantics.c (expand_or_defer_fn): Honor -fkeep-inline-functions.
+
PR c++/16965
* cp-tree.h (qualified_name_lookup_error): Add parameter.
* name-lookup.c (do_class_using_decl): Restrict set of entities
/* We make a decision about linkage for these functions at the end
of the compilation. Until that point, we do not want the back
end to output them -- but we do want it to see the bodies of
- these fucntions so that it can inline them as appropriate. */
+ these functions so that it can inline them as appropriate. */
if (DECL_DECLARED_INLINE_P (fn) || DECL_IMPLICIT_INSTANTIATION (fn))
{
if (!at_eof)
}
else
import_export_decl (fn);
+
+ /* If the user wants us to keep all inline functions, then mark
+ this function as needed so that finish_file will make sure to
+ output it later. */
+ if (flag_keep_inline_functions && DECL_DECLARED_INLINE_P (fn))
+ mark_needed (fn);
}
/* There's no reason to do any of the work here if we're only doing
@item -fkeep-inline-functions
@opindex fkeep-inline-functions
-Even if all calls to a given function are integrated, and the function
-is declared @code{static}, nevertheless output a separate run-time
-callable version of the function. This switch does not affect
-@code{extern inline} functions.
+In C, emit @code{static} functions that are declared @code{inline}
+into the object file, even if the function has been inlined into all
+of its callers. This switch does not affect functions using the
+@code{extern inline} extension in GNU C. In C++, emit any and all
+inline functions into the object file.
@item -fkeep-static-consts
@opindex fkeep-static-consts
2004-08-17 Mark Mitchell <mark@codesourcery.com>
+ PR c++/15871
+ * g++.dg/opt/inline8.C: New test.
+
PR c++/16965
* g++.dg/parse/error17.C: New test.
--- /dev/null
+// PR c++/15871
+// { dg-options "-O2 -fkeep-inline-functions" }
+// { dg-final { scan-assembler "foo" } }
+
+inline void foo(void) { }