Fix wrong condition in ipa-visibility.c (PR ipa/81520).
authorMartin Liska <mliska@suse.cz>
Tue, 25 Jul 2017 10:20:23 +0000 (12:20 +0200)
committerMartin Liska <marxin@gcc.gnu.org>
Tue, 25 Jul 2017 10:20:23 +0000 (10:20 +0000)
2017-07-25  Martin Liska  <mliska@suse.cz>

PR ipa/81520
* ipa-visibility.c (function_and_variable_visibility): Make the redirection
just on target that do supporting aliasing.  Fix GNU coding style.
2017-07-25  Martin Liska  <mliska@suse.cz>

PR ipa/81520
* gcc.dg/ipa/pr81520.c: New test.

From-SVN: r250501

gcc/ChangeLog
gcc/ipa-visibility.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/ipa/pr81520.c [new file with mode: 0644]

index fa58d51012bdad5f05ebde064725281bafcb19e8..9177c6a8f5b238bbe01d4d4d742128652f3d069d 100644 (file)
@@ -1,3 +1,9 @@
+2017-07-25  Martin Liska  <mliska@suse.cz>
+
+       PR ipa/81520
+       * ipa-visibility.c (function_and_variable_visibility): Make the redirection
+       just on target that do supporting aliasing.  Fix GNU coding style.
+
 2017-07-25  Sebastian Huber  <sebastian.huber@embedded-brains.de>
 
        PR libgcc/61152
index 21321703dbbc3329d1a25b18e8a20b49160c8267..13cf2a3a1cf0cb3fce97837ef6e7a2bfe7dadc31 100644 (file)
@@ -615,9 +615,10 @@ function_and_variable_visibility (bool whole_program)
   struct cgraph_node *node;
   varpool_node *vnode;
 
-  /* All aliases should be procssed at this point.  */
+  /* All aliases should be processed at this point.  */
   gcc_checking_assert (!alias_pairs || !alias_pairs->length ());
 
+#ifdef ASM_OUTPUT_DEF
   FOR_EACH_DEFINED_FUNCTION (node)
     {
       if (node->get_availability () != AVAIL_INTERPOSABLE
@@ -634,20 +635,22 @@ function_and_variable_visibility (bool whole_program)
            continue;
 
          if (!alias)
-           { 
+           {
              alias = dyn_cast<cgraph_node *> (node->noninterposable_alias ());
              gcc_assert (alias && alias != node);
            }
 
          e->redirect_callee (alias);
          if (gimple_has_body_p (e->caller->decl))
-           { 
+           {
              push_cfun (DECL_STRUCT_FUNCTION (e->caller->decl));
              e->redirect_call_stmt_to_callee ();
-             pop_cfun (); 
+             pop_cfun ();
            }
        }
     }
+#endif
+
   FOR_EACH_FUNCTION (node)
     {
       int flags = flags_from_decl_or_type (node->decl);
index f3a4812308c1822c3966fe96928f0d705902789a..2762ae5b70f160eebd51581786b18a6a187a47d3 100644 (file)
@@ -1,3 +1,8 @@
+2017-07-25  Martin Liska  <mliska@suse.cz>
+
+       PR ipa/81520
+       * gcc.dg/ipa/pr81520.c: New test.
+
 2017-07-25  Marek Polacek  <polacek@redhat.com>
 
        PR c/81364
diff --git a/gcc/testsuite/gcc.dg/ipa/pr81520.c b/gcc/testsuite/gcc.dg/ipa/pr81520.c
new file mode 100644 (file)
index 0000000..b5d33d2
--- /dev/null
@@ -0,0 +1,11 @@
+/* PR ipa/81520 */
+/* { dg-do compile } */
+/* { dg-options "-O2 -fPIC" } */
+/* { dg-require-effective-target fpic } */
+
+char
+a (int b)
+{
+  a (b);
+  return 0;
+}