2009-03-26 Andrew Haley <aph@redhat.com>
authoraph <aph@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 26 Mar 2009 15:17:26 +0000 (15:17 +0000)
committeraph <aph@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 26 Mar 2009 15:17:26 +0000 (15:17 +0000)
        PR C++/39380
        * decl2.c (possibly_inlined_p): If java exceptions are in use
        don't inline a decl unless it is explicitly marked inline.
        * lex.c: (pragma_java_exceptions): New variable.
        (handle_pragma_java_exceptions): Set pragma_java_exceptions.
        * cp-tree.h (pragma_java_exceptions): Declare new variable.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@145091 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/cp/ChangeLog
gcc/cp/cp-tree.h
gcc/cp/decl2.c
gcc/cp/lex.c

index 2d4c9f3..bac3d7a 100644 (file)
@@ -1,3 +1,12 @@
+2009-03-26  Andrew Haley  <aph@redhat.com>
+
+       PR C++/39380
+       * decl2.c (possibly_inlined_p): If java exceptions are in use
+       don't inline a decl unless it is explicitly marked inline.
+       * lex.c: (pragma_java_exceptions): New variable.
+       (handle_pragma_java_exceptions): Set pragma_java_exceptions.
+       * cp-tree.h (pragma_java_exceptions): Declare new variable.
+
 2009-03-24  Jason Merrill  <jason@redhat.com>
 
        PR c++/28274
index 1745ede..6b67d2d 100644 (file)
@@ -4171,6 +4171,9 @@ struct tinst_level GTY(())
    e.g  "int f(void)".  */
 extern cp_parameter_declarator *no_parameters;
 
+/* True if we saw "#pragma GCC java_exceptions".  */
+extern bool pragma_java_exceptions;
+
 /* in call.c */
 extern bool check_dtor_name                    (tree, tree);
 
index deba8b4..2be621d 100644 (file)
@@ -3772,7 +3772,7 @@ possibly_inlined_p (tree decl)
   gcc_assert (TREE_CODE (decl) == FUNCTION_DECL);
   if (DECL_UNINLINABLE (decl))
     return false;
-  if (!optimize)
+  if (!optimize || pragma_java_exceptions)
     return DECL_DECLARED_INLINE_P (decl);
   /* When optimizing, we might inline everything when flatten
      attribute or heuristics inlining for size or autoinlining
index d708b09..66377ff 100644 (file)
@@ -81,6 +81,8 @@ struct impl_files
 
 static struct impl_files *impl_file_chain;
 
+/* True if we saw "#pragma GCC java_exceptions".  */
+bool pragma_java_exceptions;
 \f
 void
 cxx_finish (void)
@@ -430,6 +432,7 @@ handle_pragma_java_exceptions (cpp_reader* dfile ATTRIBUTE_UNUSED)
     warning (0, "junk at end of #pragma GCC java_exceptions");
 
   choose_personality_routine (lang_java);
+  pragma_java_exceptions = true;
 }
 
 /* Issue an error message indicating that the lookup of NAME (an