===================================================================
@@ -578,6 +578,13 @@ tree_profiling (void)
if (DECL_SOURCE_LOCATION (node->decl) == BUILTINS_LOCATION)
continue;
+ /* Do not instrument extern inline functions when testing coverage.
+ While this is not perfectly consistent (early inlined extern inlines
+ will get acocunted), testsuite expects that. */
+ if (DECL_EXTERNAL (node->decl)
+ && flag_test_coverage)
+ continue;
+
push_cfun (DECL_STRUCT_FUNCTION (node->decl));
/* Local pure-const may imply need to fixup the cfg. */
===================================================================
@@ -2209,11 +2209,6 @@ compile (void)
cgraph_materialize_all_clones ();
bitmap_obstack_initialize (NULL);
execute_ipa_pass_list (g->get_passes ()->all_late_ipa_passes);
-#ifdef ENABLE_CHECKING
- symtab_node::verify_symtab_nodes ();
- /* Verify late IPA passes cleaned up after themselves. */
- gcc_assert (!symtab_remove_unreachable_nodes (false, dump_file));
-#endif
bitmap_obstack_release (NULL);
mark_functions_to_output ();
===================================================================
@@ -1,8 +1,8 @@
/* { dg-do compile } */
-/* { dg-options "-O3 -c -fdump-ipa-cgraph" } */
+/* { dg-options "-O3 -c -fdump-ipa-free-inline-summary" } */
static __attribute__((constructor))
void empty_constructor()
{
}
-/* { dg-final { scan-ipa-dump "Reclaiming functions: empty_constructor" "cgraph" } } */
-/* { dg-final { cleanup-ipa-dump "cgraph" } } */
+/* { dg-final { scan-ipa-dump "Reclaiming functions: empty_constructor" "free-inline-summary" } } */
+/* { dg-final { cleanup-ipa-dump "free-inline-summary" } } */
===================================================================
@@ -30,7 +30,7 @@ t()
/* After inlining the call within constructor needs to be checked to not go into a basetype.
We should see the vtbl store and we should notice extcall as possibly clobbering the
type but ignore it because b is in static storage. */
-/* { dg-final { scan-tree-dump "Determined dynamic type." "fre2" } } */
+/* { dg-final { scan-tree-dump "No dynamic type change found." "fre2" } } */
/* { dg-final { scan-tree-dump "Checking vtbl store:" "fre2" } } */
/* { dg-final { scan-tree-dump "Function call may change dynamic type:extcall" "fre2" } } */
/* { dg-final { scan-tree-dump "converting indirect call to function virtual void" "fre2" } } */
===================================================================
@@ -0,0 +1,23 @@
+/* { dg-options "-O2 -fdump-tree-fre2-details" } */
+typedef enum
+{
+} UErrorCode;
+class UnicodeString
+{
+public:
+ UnicodeString ();
+ virtual ~UnicodeString ();
+};
+class A
+{
+ UnicodeString &m_fn1 (UnicodeString &, int &p2, UErrorCode &) const;
+};
+UnicodeString::UnicodeString () {}
+UnicodeString &
+A::m_fn1 (UnicodeString &, int &p2, UErrorCode &) const
+{
+ UnicodeString a[2];
+}
+
+/* { dg-final { scan-tree-dump-not "converting indirect call to function virtual UnicodeString" "fre2" } } */
+/* { dg-final { cleanup-tree-dump "fre2" } } */