Author: yug
Date: 2011-11-08 04:31:37 -0500 (Tue, 08 Nov 2011)
New Revision: 3790

Modified:
   trunk/osprey/driver/phases.c
   trunk/osprey/driver/special_options.c
   trunk/osprey/ipa/inline/inline_driver.cxx
   trunk/osprey/ipa/main/analyze/ipa_cg.cxx
Log:
Fix bug838. besides that,  the patch also enhances the gnu compatibility:
(1). enables -O0 -inline now
(2). does not delete non-callable static functions under O0
(3). bug838-1 to bug838-6 at the open64.net regression test suite prove that.

Code Review: Fred Chow, Ake Sandgren and Suneel Jain


Modified: trunk/osprey/driver/phases.c
===================================================================
--- trunk/osprey/driver/phases.c        2011-11-07 01:46:45 UTC (rev 3789)
+++ trunk/osprey/driver/phases.c        2011-11-08 09:31:37 UTC (rev 3790)
@@ -3228,6 +3228,16 @@
                } else {
                        args = init_string_list();
                        add_file_args_first (args, phase_order[i]);  // bug 6874
+                       if (phase_order[i] == P_inline &&
+                           run_inline == TRUE &&
+                           olevel == 0 &&
+                           !(option_was_seen(O_INLINE_) || 
+                           option_was_seen(O_INLINE) || 
+                           option_was_seen(O_inline) || 
+                           option_was_seen(O_finline) || 
+                           option_was_seen(O_finline_functions))) {
+                               prepend_option_seen 
(add_string_option(O_INLINE_, "none"));
+                       }
                        copy_phase_options (args, phase_order[i]);
                         
                        if (!cmd_line_updated &&

Modified: trunk/osprey/driver/special_options.c
===================================================================
--- trunk/osprey/driver/special_options.c       2011-11-07 01:46:45 UTC (rev 
3789)
+++ trunk/osprey/driver/special_options.c       2011-11-08 09:31:37 UTC (rev 
3790)
@@ -365,8 +365,9 @@
         * -g to change the generated code so we leave it off always.
         * See bugs 1917 and 7595.
         */
-       if (olevel == 0 && inline_t == UNDEFINED)
-         inline_t = FALSE;
+        /*
+          open64.net bug838, to get gnu compatibility, we open inline for O0.
+        */
 
         /* In the SGI world, -g3 says to emit crippled debug info for use
         * with optimized code. In the GNU/Pathscale world, -g3 says to emit

Modified: trunk/osprey/ipa/inline/inline_driver.cxx
===================================================================
--- trunk/osprey/ipa/inline/inline_driver.cxx   2011-11-07 01:46:45 UTC (rev 
3789)
+++ trunk/osprey/ipa/inline/inline_driver.cxx   2011-11-08 09:31:37 UTC (rev 
3790)
@@ -196,6 +196,10 @@
                        Opt_Level = 2;
                        INLINE_Enable_Split_Common = FALSE;
                        break;
+                    case '0': /* setup O0 for lw_inline for gcc compatible*/
+                        Opt_Level = 0;
+                        INLINE_Enable_Split_Common = FALSE;
+                       break;
                    default:
                        Opt_Level = 1;
                        INLINE_Enable_Split_Common = FALSE;

Modified: trunk/osprey/ipa/main/analyze/ipa_cg.cxx
===================================================================
--- trunk/osprey/ipa/main/analyze/ipa_cg.cxx    2011-11-07 01:46:45 UTC (rev 
3789)
+++ trunk/osprey/ipa/main/analyze/ipa_cg.cxx    2011-11-08 09:31:37 UTC (rev 
3790)
@@ -1848,6 +1848,14 @@
            node->Set_Undeletable();
            action = MARK_USED;
            visited[v] = VISITED_AND_KEEP;
+#if defined(_LIGHTWEIGHT_INLINER) 
+        /* O0 does not delete functions with no inline attrib */
+        } else if (Opt_Level == 0 && ! node->Has_Inline_Attrib()) {
+          node->Clear_Deletable();
+          node->Set_Undeletable();
+          action = MARK_USED;
+          visited[v] = VISITED_AND_KEEP;
+#endif
        } else if (visited[v] == 0)
            visited[v] = VISITED_BUT_UNDECIDED;
        break;


------------------------------------------------------------------------------
RSA(R) Conference 2012
Save $700 by Nov 18
Register now
http://p.sf.net/sfu/rsa-sfdev2dev1
_______________________________________________
Open64-devel mailing list
Open64-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/open64-devel

Reply via email to