]> git.ipfire.org Git - thirdparty/gcc.git/blobdiff - gcc/multiple_target.c
PR fortran/95090 - ICE: identifier overflow
[thirdparty/gcc.git] / gcc / multiple_target.c
index fa194d416fe00eee1892cd8293ab5fd254c9f192..c1cfe8ff978192b73c704a4f5a380f6392addf9a 100644 (file)
@@ -2,7 +2,7 @@
 
    Contributed by Evgeny Stupachenko <evstupac@gmail.com>
 
-   Copyright (C) 2015-2019 Free Software Foundation, Inc.
+   Copyright (C) 2015-2020 Free Software Foundation, Inc.
 
 This file is part of GCC.
 
@@ -126,7 +126,7 @@ create_dispatcher_calls (struct cgraph_node *node)
       FOR_EACH_VEC_ELT (edges_to_redirect, i, e)
        {
          e->redirect_callee (inode);
-         e->redirect_call_stmt_to_callee ();
+         cgraph_edge::redirect_call_stmt_to_callee (e);
        }
 
       /* Redirect references.  */
@@ -158,7 +158,8 @@ create_dispatcher_calls (struct cgraph_node *node)
            {
              symtab_node *source = ref->referring;
              source->create_reference (inode, IPA_REF_ALIAS);
-             source->add_to_same_comdat_group (inode);
+             if (inode->get_comdat_group ())
+               source->add_to_same_comdat_group (inode);
            }
          else
            gcc_unreachable ();
@@ -177,10 +178,6 @@ create_dispatcher_calls (struct cgraph_node *node)
   node->externally_visible = false;
   node->forced_by_abi = false;
   node->set_section (NULL);
-  node->unique_name = ((node->resolution == LDPR_PREVAILING_DEF_IRONLY
-                       || node->resolution == LDPR_PREVAILING_DEF_IRONLY_EXP)
-                      && !flag_incremental_link);
-  node->resolution = LDPR_PREVAILING_DEF_IRONLY;
 
   DECL_ARTIFICIAL (node->decl) = 1;
   node->force_output = true;
@@ -310,9 +307,8 @@ create_target_clone (cgraph_node *node, bool definition, char *name,
   if (definition)
     {
       new_node = node->create_version_clone_with_body (vNULL, NULL,
-                                                      NULL, false,
-                                                      NULL, NULL,
-                                                      name, attributes);
+                                                      NULL, NULL,
+                                                      NULL, name, attributes);
       if (new_node == NULL)
        return NULL;
       new_node->force_output = true;
@@ -429,7 +425,7 @@ expand_target_clones (struct cgraph_node *node, bool definition)
                                                   attributes);
       if (new_node == NULL)
        return false;
-      new_node->local.local = false;
+      new_node->local = false;
       XDELETEVEC (suffix);
 
       decl2_v = new_node->function_version ();
@@ -457,7 +453,7 @@ expand_target_clones (struct cgraph_node *node, bool definition)
   tree attributes = make_attribute ("target", "default",
                                    DECL_ATTRIBUTES (node->decl));
   DECL_ATTRIBUTES (node->decl) = attributes;
-  node->local.local = false;
+  node->local = false;
   return true;
 }
 
@@ -501,7 +497,7 @@ redirect_to_specific_clone (cgraph_node *node)
              if (attribute_list_equal (attr_target, attr_target2))
                {
                  e->redirect_callee (callee);
-                 e->redirect_call_stmt_to_callee ();
+                 cgraph_edge::redirect_call_stmt_to_callee (e);
                  break;
                }
            }