https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64835

            Bug ID: 64835
           Summary: -fno-ipa-cp is inconsitently supported when attributes
                    optimize or target are used
           Product: gcc
           Version: 5.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: target
          Assignee: unassigned at gcc dot gnu.org
          Reporter: chrbr at gcc dot gnu.org

Created attachment 34606
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=34606&action=edit
testcase

When using the target attributes on ARM, all ipa/inline tests that use
-fno-ipa-cp fails. Althought the target attribute should have no impact on
-fno-ipa-cp.

This is a more general issue with the DECL_FUNCTION_SPECIFIC_OPTIMIZATION macro
test which is used both for the target attributes and the optimize attributes. 

This can be observed with the attached test on i386. Compiled with "-O3
-fno-early-inlining -fno-ipa-cp"

indeed
ipa_proc.c::ipa_func_spec_opts_forbid_analysis_p as a explicit test for
-fno-ipa-pc, and none is checked for the global optimisation level.

---------
   tree fs_opts = DECL_FUNCTION_SPECIFIC_OPTIMIZATION (node->decl);

   if (!fs_opts)
     return false;
   return !opt_for_fn (node->decl, optimize) || !opt_for_fn (node->decl,
flag_ipa_cp);
---------

it seems that to be consistent, we shoud apply the same test if no
specific_optimiaation. something linke:

   if (!fs_opts)
-    return false;
+    return !optimize || !flag_ipa_cp;

however then a few tests are failing . e.g iinline-1.c. because they force
-fno-ipa-cp. Strangly those tests test that inlining is performed so the
-fno-ipa-cp is weird as the logic seems to be inversed.

Reply via email to