OSDN Git Service

* doc/invoke.texi (-fwhopr): Merge into -flto section.
authorhubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 11 Nov 2010 22:54:53 +0000 (22:54 +0000)
committerhubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 11 Nov 2010 22:54:53 +0000 (22:54 +0000)
(-flto-partition): Document none.
* gcc.c (LINK_COMMAND_SPEC): Remove -fwhopr.
* lto-wrapper.c: Update comment.
(run_gcc): Update LTO option parsing.
* opts.c (finish_options): add support -flto-partition=none
(common_handle_option): Remove fwhopr.
* common.opt: Turn fwhopr into flto.
* collect2.c (main): Update option handling.
* cgraphunit.c (cgraph_decide_is_function_needed): Remove flag_whopr.
* ipa-split.c (execute_split_functions): Remove flag_whopr.
* ipa.c (function_and_variable_visibility): Remove flag_whopr.
* ipa-prop.c (ipa_compute_jump_functions): Remove flag_whopr.
* varpool.c (decide_is_variable_needed): Remove flag_whopr.

* gcc.dg/20081223-1.c: Update LTO options.
* gcc.dg/lto/20090206-1_0.c: Update LTO options.
* gcc.dg/lto/20081118_0.c: Update LTO options.
* gcc.dg/lto/ipareference_0.c: Update LTO options.
* gcc.dg/lto/20100423-2_0.c: Update LTO options.
* gcc.dg/lto/20081201-1_0.c: Update LTO options.
* gcc.dg/lto/ipacp_0.c: Update LTO options.
* gcc.dg/lto/20090116_0.c: Update LTO options.
* gcc.dg/lto/20091015-1_0.c: Update LTO options.
* gcc.dg/lto/20090126-2_0.c: Update LTO options.
* gcc.dg/lto/20081202-2_0.c: Update LTO options.
* gcc.dg/lto/20081204-1_0.c: Update LTO options.
* gcc.dg/lto/const-uniq_0.c: Update LTO options.
* gcc.dg/lto/20081224_0.c: Update LTO options.
* gcc.dg/lto/20090219_0.c: Update LTO options.
* gcc.dg/lto/ipareference2_0.c: Update LTO options.
* gcc.dg/lto/20090206-2_0.c: Update LTO options.
* gcc.dg/lto/20081115_0.c: Update LTO options.
* gcc.dg/lto/20081201-2_0.c: Update LTO options.
* gcc.dg/lto/20081120-2_0.c: Update LTO options.
* gcc.dg/lto/materialize-1_0.c: Update LTO options.
* gcc.dg/lto/20090126-1_0.c: Update LTO options.
* gcc.dg/lto/20081202-1_0.c: Update LTO options.
* gcc.dg/lto/noreturn-1_0.c: Update LTO options.
* g++.dg/20090107-1.C: Update LTO options.
* g++.dg/lto/pr45679-2_0.C: Update LTO options.
* g++.dg/lto/20081123_0.C: Update LTO options.
* g++.dg/lto/20090313_0.C: Update LTO options.
* g++.dg/lto/20081125_0.C: Update LTO options.
* g++.dg/lto/20081109-1_0.C: Update LTO options.
* g++.dg/lto/20081219_0.C: Update LTO options.
* g++.dg/lto/20100724-1_0.C: Update LTO options.
* g++.dg/lto/20081204-1_0.C: Update LTO options.
* g++.dg/lto/20090303_0.C: Update LTO options.
* g++.dg/lto/20100723-1_0.C: Update LTO options.
* g++.dg/lto/pr45679-1_0.C: Update LTO options.
* g++.dg/lto/20090128_0.C: Update LTO options.
* g++.dg/lto/20081204-2_0.C: Update LTO options.
* g++.dg/lto/20090302_0.C: Update LTO options.
* g++.dg/lto/20081119-1_0.C: Update LTO options.
* g++.dg/lto/20081118_0.C: Update LTO options.
* g++.dg/20090121-1.C: Update LTO options.
* objc.dg/lto/lto.exp: Update LTO options.
* lib/lto.exp: Update LTO options.
* lib/gcc-dg.exp: Update LTO options.
* lib/c-torture.exp: Update LTO options.
* obj-c++.dg/lto/lto.exp: Update LTO options.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@166625 138bc75d-0d04-0410-961f-82ee72b054a4

61 files changed:
gcc/ChangeLog
gcc/cgraphunit.c
gcc/collect2.c
gcc/common.opt
gcc/doc/invoke.texi
gcc/gcc.c
gcc/ipa-prop.c
gcc/ipa-split.c
gcc/ipa.c
gcc/lto-wrapper.c
gcc/opts.c
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/20090107-1.C
gcc/testsuite/g++.dg/20090121-1.C
gcc/testsuite/g++.dg/lto/20081109-1_0.C
gcc/testsuite/g++.dg/lto/20081118_0.C
gcc/testsuite/g++.dg/lto/20081119-1_0.C
gcc/testsuite/g++.dg/lto/20081123_0.C
gcc/testsuite/g++.dg/lto/20081125_0.C
gcc/testsuite/g++.dg/lto/20081204-1_0.C
gcc/testsuite/g++.dg/lto/20081204-2_0.C
gcc/testsuite/g++.dg/lto/20081219_0.C
gcc/testsuite/g++.dg/lto/20090128_0.C
gcc/testsuite/g++.dg/lto/20090302_0.C
gcc/testsuite/g++.dg/lto/20090303_0.C
gcc/testsuite/g++.dg/lto/20090313_0.C
gcc/testsuite/g++.dg/lto/20100723-1_0.C
gcc/testsuite/g++.dg/lto/20100724-1_0.C
gcc/testsuite/g++.dg/lto/pr45679-1_0.C
gcc/testsuite/g++.dg/lto/pr45679-2_0.C
gcc/testsuite/gcc.dg/20081223-1.c
gcc/testsuite/gcc.dg/lto/20081115_0.c
gcc/testsuite/gcc.dg/lto/20081118_0.c
gcc/testsuite/gcc.dg/lto/20081120-2_0.c
gcc/testsuite/gcc.dg/lto/20081201-1_0.c
gcc/testsuite/gcc.dg/lto/20081201-2_0.c
gcc/testsuite/gcc.dg/lto/20081202-1_0.c
gcc/testsuite/gcc.dg/lto/20081202-2_0.c
gcc/testsuite/gcc.dg/lto/20081204-1_0.c
gcc/testsuite/gcc.dg/lto/20081224_0.c
gcc/testsuite/gcc.dg/lto/20090116_0.c
gcc/testsuite/gcc.dg/lto/20090126-1_0.c
gcc/testsuite/gcc.dg/lto/20090126-2_0.c
gcc/testsuite/gcc.dg/lto/20090206-1_0.c
gcc/testsuite/gcc.dg/lto/20090206-2_0.c
gcc/testsuite/gcc.dg/lto/20090219_0.c
gcc/testsuite/gcc.dg/lto/20091015-1_0.c
gcc/testsuite/gcc.dg/lto/20100423-1_0.c
gcc/testsuite/gcc.dg/lto/20100423-2_0.c
gcc/testsuite/gcc.dg/lto/const-uniq_0.c
gcc/testsuite/gcc.dg/lto/ipacp_0.c
gcc/testsuite/gcc.dg/lto/ipareference2_0.c
gcc/testsuite/gcc.dg/lto/ipareference_0.c
gcc/testsuite/gcc.dg/lto/materialize-1_0.c
gcc/testsuite/gcc.dg/lto/noreturn-1_0.c
gcc/testsuite/lib/c-torture.exp
gcc/testsuite/lib/gcc-dg.exp
gcc/testsuite/lib/lto.exp
gcc/testsuite/obj-c++.dg/lto/lto.exp
gcc/testsuite/objc.dg/lto/lto.exp
gcc/varpool.c

index 8ae4ecb..d5e85a2 100644 (file)
@@ -1,5 +1,22 @@
 2010-11-11  Jan Hubicka  <jh@suse.cz>
 
 2010-11-11  Jan Hubicka  <jh@suse.cz>
 
+       * doc/invoke.texi (-fwhopr): Merge into -flto section.
+       (-flto-partition): Document none.
+       * gcc.c (LINK_COMMAND_SPEC): Remove -fwhopr.
+       * lto-wrapper.c: Update comment.
+       (run_gcc): Update LTO option parsing.
+       * opts.c (finish_options): add support -flto-partition=none
+       (common_handle_option): Remove fwhopr.
+       * common.opt: Turn fwhopr into flto.
+       * collect2.c (main): Update option handling.
+       * cgraphunit.c (cgraph_decide_is_function_needed): Remove flag_whopr.
+       * ipa-split.c (execute_split_functions): Remove flag_whopr.
+       * ipa.c (function_and_variable_visibility): Remove flag_whopr.
+       * ipa-prop.c (ipa_compute_jump_functions): Remove flag_whopr.
+       * varpool.c (decide_is_variable_needed): Remove flag_whopr.
+
+2010-11-11  Jan Hubicka  <jh@suse.cz>
+
        PR tree-optimize/40436
        * ipa-inline.c (likely_eliminated_by_inlining_p): Rename to ...
        (eliminated_by_inlining_prob): ... this one; return 50% probability for
        PR tree-optimize/40436
        * ipa-inline.c (likely_eliminated_by_inlining_p): Rename to ...
        (eliminated_by_inlining_prob): ... this one; return 50% probability for
index c2d2fed..f982439 100644 (file)
@@ -197,8 +197,7 @@ cgraph_decide_is_function_needed (struct cgraph_node *node, tree decl)
            && !(DECL_CONTEXT (decl)
                 && TREE_CODE (DECL_CONTEXT (decl)) == FUNCTION_DECL)))
        && !flag_whole_program
            && !(DECL_CONTEXT (decl)
                 && TREE_CODE (DECL_CONTEXT (decl)) == FUNCTION_DECL)))
        && !flag_whole_program
-       && !flag_lto
-       && !flag_whopr)
+       && !flag_lto)
       && !DECL_COMDAT (decl) && !DECL_EXTERNAL (decl))
     return true;
 
       && !DECL_COMDAT (decl) && !DECL_EXTERNAL (decl))
     return true;
 
index 37a535b..0d745ae 100644 (file)
@@ -1196,21 +1196,20 @@ main (int argc, char **argv)
 
   /* Parse command line early for instances of -debug.  This allows
      the debug flag to be set before functions like find_a_file()
 
   /* Parse command line early for instances of -debug.  This allows
      the debug flag to be set before functions like find_a_file()
-     are called.  We also look for the -flto or -fwhopr flag to know
+     are called.  We also look for the -flto or -flto-partition=none flag to know
      what LTO mode we are in.  */
   {
     int i;
      what LTO mode we are in.  */
   {
     int i;
+    bool no_partition = false;
 
     for (i = 1; argv[i] != NULL; i ++)
       {
        if (! strcmp (argv[i], "-debug"))
          debug = true;
 
     for (i = 1; argv[i] != NULL; i ++)
       {
        if (! strcmp (argv[i], "-debug"))
          debug = true;
-        else if (! strcmp (argv[i], "-flto") && ! use_plugin)
-         {
-           use_verbose = true;
-           lto_mode = LTO_MODE_LTO;
-         }
-        else if (! strncmp (argv[i], "-fwhopr", 7) && ! use_plugin)
+        else if (! strcmp (argv[i], "-flto-partition=none"))
+         no_partition = true;
+        else if ((! strncmp (argv[i], "-flto=", 6)
+                 || ! strcmp (argv[i], "-flto")) && ! use_plugin)
          {
            use_verbose = true;
            lto_mode = LTO_MODE_WHOPR;
          {
            use_verbose = true;
            lto_mode = LTO_MODE_WHOPR;
@@ -1239,6 +1238,8 @@ main (int argc, char **argv)
 #endif
       }
     vflag = debug;
 #endif
       }
     vflag = debug;
+    if (no_partition)
+      lto_mode = LTO_MODE_LTO;
   }
 
 #ifndef DEFAULT_A_OUT_NAME
   }
 
 #ifndef DEFAULT_A_OUT_NAME
@@ -1485,8 +1486,7 @@ main (int argc, char **argv)
              break;
 
             case 'f':
              break;
 
             case 'f':
-             if (strcmp (arg, "-flto") == 0
-                 || strncmp (arg, "-fwhopr", 7) == 0)
+             if (strncmp (arg, "-flto", 5) == 0)
                {
 #ifdef ENABLE_LTO
                  /* Do not pass LTO flag to the linker. */
                {
 #ifdef ENABLE_LTO
                  /* Do not pass LTO flag to the linker. */
index 71f4578..85eaa37 100644 (file)
@@ -1138,9 +1138,13 @@ Common Ignore
 Does nothing.  Preserved for backward compatibility.
 
 flto
 Does nothing.  Preserved for backward compatibility.
 
 flto
-Common Var(flag_lto)
+Common
 Enable link-time optimization.
 
 Enable link-time optimization.
 
+flto=
+Common RejectNegative Joined Var(flag_lto)
+Link-time optimization with number of parallel jobs or jobserver.
+
 flto-partition=1to1
 Common Var(flag_lto_partition_1to1)
 Partition functions and vars at linktime based on object files they originate from
 flto-partition=1to1
 Common Var(flag_lto_partition_1to1)
 Partition functions and vars at linktime based on object files they originate from
@@ -1149,6 +1153,10 @@ flto-partition=balanced
 Common Var(flag_lto_partition_balanced)
 Partition functions and vars at linktime into approximately same sized buckets
 
 Common Var(flag_lto_partition_balanced)
 Partition functions and vars at linktime into approximately same sized buckets
 
+flto-partition=none
+Common Var(flag_lto_partition_none)
+Disable partioning and streaming
+
 ; The initial value of -1 comes from Z_DEFAULT_COMPRESSION in zlib.h.
 flto-compression-level=
 Common Joined RejectNegative UInteger Var(flag_lto_compression_level) Init(-1)
 ; The initial value of -1 comes from Z_DEFAULT_COMPRESSION in zlib.h.
 flto-compression-level=
 Common Joined RejectNegative UInteger Var(flag_lto_compression_level) Init(-1)
@@ -1879,14 +1887,6 @@ fweb
 Common Report Var(flag_web) Init(2) Optimization
 Construct webs and split unrelated uses of single variable
 
 Common Report Var(flag_web) Init(2) Optimization
 Construct webs and split unrelated uses of single variable
 
-fwhopr
-Common
-Enable partitioned link-time optimization
-
-fwhopr=
-Common RejectNegative Joined Var(flag_whopr)
-Partitioned link-time optimization with number of parallel jobs or jobserver.
-
 ftree-builtin-call-dce
 Common Report Var(flag_tree_builtin_call_dce) Init(0) Optimization
 Enable conditional dead code elimination for builtin calls
 ftree-builtin-call-dce
 Common Report Var(flag_tree_builtin_call_dce) Init(0) Optimization
 Enable conditional dead code elimination for builtin calls
index f197483..f2deda3 100644 (file)
@@ -7429,14 +7429,14 @@ and those merged by attribute @code{externally_visible} become static functions
 and in effect are optimized more aggressively by interprocedural optimizers. If @command{gold} is used as the linker plugin, @code{externally_visible} attributes are automatically added to functions (not variable yet due to a current @command{gold} issue) that are accessed outside of LTO objects according to resolution file produced by @command{gold}.  For other linkers that cannot generate resolution file, explicit @code{externally_visible} attributes are still necessary.
 While this option is equivalent to proper use of the @code{static} keyword for
 programs consisting of a single file, in combination with option
 and in effect are optimized more aggressively by interprocedural optimizers. If @command{gold} is used as the linker plugin, @code{externally_visible} attributes are automatically added to functions (not variable yet due to a current @command{gold} issue) that are accessed outside of LTO objects according to resolution file produced by @command{gold}.  For other linkers that cannot generate resolution file, explicit @code{externally_visible} attributes are still necessary.
 While this option is equivalent to proper use of the @code{static} keyword for
 programs consisting of a single file, in combination with option
-@option{-flto} or @option{-fwhopr} this flag can be used to
+@option{-flto} this flag can be used to
 compile many smaller scale programs since the functions and variables become
 local for the whole combined compilation unit, not for the single source file
 itself.
 
 This option implies @option{-fwhole-file} for Fortran programs.
 
 compile many smaller scale programs since the functions and variables become
 local for the whole combined compilation unit, not for the single source file
 itself.
 
 This option implies @option{-fwhole-file} for Fortran programs.
 
-@item -flto
+@item -flto[=@var{n}]
 @opindex flto
 This option runs the standard link-time optimizer.  When invoked
 with source code, it generates GIMPLE (one of GCC's internal
 @opindex flto
 This option runs the standard link-time optimizer.  When invoked
 with source code, it generates GIMPLE (one of GCC's internal
@@ -7575,12 +7575,13 @@ If you are not using @command{gold} and/or do not specify
 will be extracted and linked as usual, but they will not participate
 in the LTO optimization process.
 
 will be extracted and linked as usual, but they will not participate
 in the LTO optimization process.
 
-Link time optimizations do not require the presence of the whole
-program to operate.  If the program does not require any symbols to
-be exported, it is possible to combine @option{-flto} and
-@option{-fwhopr} with @option{-fwhole-program} to allow the
-interprocedural optimizers to use more aggressive assumptions which
-may lead to improved optimization opportunities.
+Link time optimizations do not require the presence of the whole program to
+operate.  If the program does not require any symbols to be exported, it is
+possible to combine @option{-flto} and with @option{-fwhole-program} to allow
+the interprocedural optimizers to use more aggressive assumptions which may
+lead to improved optimization opportunities. 
+Use of @option{-fwhole-program} is not needed when linker plugin is
+active (see @option{-fuse-linker-plugin}).
 
 Regarding portability: the current implementation of LTO makes no
 attempt at generating bytecode that can be ported between different
 
 Regarding portability: the current implementation of LTO makes no
 attempt at generating bytecode that can be ported between different
@@ -7589,23 +7590,9 @@ strict version check, so bytecode files generated in one version of
 GCC will not work with an older/newer version of GCC.
 
 Link time optimization does not play well with generating debugging
 GCC will not work with an older/newer version of GCC.
 
 Link time optimization does not play well with generating debugging
-information.  Combining @option{-flto} or @option{-fwhopr} with
+information.  Combining @option{-flto} with
 @option{-g} is experimental.
 
 @option{-g} is experimental.
 
-This option is disabled by default.
-
-@item -fwhopr[=@var{n}]
-@opindex fwhopr
-This option is identical in functionality to @option{-flto} but it
-differs in how the final link stage is executed.  Instead of loading
-all the function bodies in memory, the callgraph is analyzed and
-optimization decisions are made (whole program analysis or WPA). Once
-optimization decisions are made, the callgraph is partitioned and the
-different sections are compiled separately (local transformations or
-LTRANS)@.  This process allows optimizations on very large programs
-that otherwise would not fit in memory.  This option enables
-@option{-fwpa} and @option{-fltrans} automatically.
-
 If you specify the optional @var{n} the link stage is executed in
 parallel using @var{n} parallel jobs by utilizing an installed
 @command{make} program.  The environment variable @env{MAKE} may be
 If you specify the optional @var{n} the link stage is executed in
 parallel using @var{n} parallel jobs by utilizing an installed
 @command{make} program.  The environment variable @env{MAKE} may be
@@ -7618,14 +7605,16 @@ The parent Makefile will need a @samp{+} prepended to the command recipe
 for this to work. This will likely only work if @env{MAKE} is 
 GNU make.
 
 for this to work. This will likely only work if @env{MAKE} is 
 GNU make.
 
-Disabled by default.
+This option is disabled by default.
 
 @item -flto-partition=@var{alg}
 @opindex flto-partition
 Specify partitioning algorithm used by @option{-fwhopr} mode.  The value is
 either @code{1to1} to specify partitioning corresponding to source files
 or @code{balanced} to specify partitioning into, if possible, equally sized
 
 @item -flto-partition=@var{alg}
 @opindex flto-partition
 Specify partitioning algorithm used by @option{-fwhopr} mode.  The value is
 either @code{1to1} to specify partitioning corresponding to source files
 or @code{balanced} to specify partitioning into, if possible, equally sized
-chunks.  The default value is @code{balanced}.
+chunks.  Specifying @code{none} as an algorithm disables partitioning
+and streaming completely.
+The default value is @code{balanced}.
 
 @item -fwpa
 @opindex fwpa
 
 @item -fwpa
 @opindex fwpa
index 5884f38..fcb8a59 100644 (file)
--- a/gcc/gcc.c
+++ b/gcc/gcc.c
@@ -645,7 +645,7 @@ proper position among the other output files.  */
 /* We want %{T*} after %{L*} and %D so that it can be used to specify linker
    scripts which exist in user specified directories, or in standard
    directories.  */
 /* We want %{T*} after %{L*} and %D so that it can be used to specify linker
    scripts which exist in user specified directories, or in standard
    directories.  */
-/* We pass any -flto and -fwhopr flags on to the linker, which is expected
+/* We pass any -flto flags on to the linker, which is expected
    to understand them.  In practice, this means it had better be collect2.  */
 #ifndef LINK_COMMAND_SPEC
 #define LINK_COMMAND_SPEC "\
    to understand them.  In practice, this means it had better be collect2.  */
 #ifndef LINK_COMMAND_SPEC
 #define LINK_COMMAND_SPEC "\
@@ -658,8 +658,8 @@ proper position among the other output files.  */
     %{static|static-libgcc:-plugin-opt=-pass-through=%(lto_libgcc)}    \
     %{static:-plugin-opt=-pass-through=-lc}    \
     } \
     %{static|static-libgcc:-plugin-opt=-pass-through=%(lto_libgcc)}    \
     %{static:-plugin-opt=-pass-through=-lc}    \
     } \
-    %{flto:%<fcompare-debug*} %{fwhopr*:%<fcompare-debug*} \
-    %{flto} %{fwhopr*} %l " LINK_PIE_SPEC \
+    %{flto*:%<fcompare-debug*} \
+    %{flto*} %l " LINK_PIE_SPEC \
    "%X %{o*} %{A} %{d} %{e*} %{m} %{N} %{n} %{r}\
     %{s} %{t} %{u*} %{z} %{Z} %{!A:%{!nostdlib:%{!nostartfiles:%S}}}\
     %{static:} %{L*} %(mfwrap) %(link_libgcc) %o\
    "%X %{o*} %{A} %{d} %{e*} %{m} %{N} %{n} %{r}\
     %{s} %{t} %{u*} %{z} %{Z} %{!A:%{!nostdlib:%{!nostartfiles:%S}}}\
     %{static:} %{L*} %(mfwrap) %(link_libgcc) %o\
index d0587b6..473f483 100644 (file)
@@ -890,7 +890,7 @@ ipa_compute_jump_functions (struct cgraph_node *node,
     {
       /* We do not need to bother analyzing calls to unknown
         functions unless they may become known during lto/whopr.  */
     {
       /* We do not need to bother analyzing calls to unknown
         functions unless they may become known during lto/whopr.  */
-      if (!cs->callee->analyzed && !flag_lto && !flag_whopr)
+      if (!cs->callee->analyzed && !flag_lto)
        continue;
       ipa_count_arguments (cs);
       /* If the descriptor of the callee is not initialized yet, we have to do
        continue;
       ipa_count_arguments (cs);
       /* If the descriptor of the callee is not initialized yet, we have to do
index e46d270..1a55352 100644 (file)
@@ -1251,7 +1251,7 @@ execute_split_functions (void)
      then inlining would still benefit.  */
   if ((!node->callers || !node->callers->next_caller)
       && !node->address_taken
      then inlining would still benefit.  */
   if ((!node->callers || !node->callers->next_caller)
       && !node->address_taken
-      && ((!flag_lto && !flag_whopr) || !node->local.externally_visible))
+      && (!flag_lto || !node->local.externally_visible))
     {
       if (dump_file)
        fprintf (dump_file, "Not splitting: not called directly "
     {
       if (dump_file)
        fprintf (dump_file, "Not splitting: not called directly "
index 7c2c7f2..1dd85f8 100644 (file)
--- a/gcc/ipa.c
+++ b/gcc/ipa.c
@@ -938,7 +938,7 @@ function_and_variable_visibility (bool whole_program)
 static unsigned int
 local_function_and_variable_visibility (void)
 {
 static unsigned int
 local_function_and_variable_visibility (void)
 {
-  return function_and_variable_visibility (flag_whole_program && !flag_lto && !flag_whopr);
+  return function_and_variable_visibility (flag_whole_program && !flag_lto);
 }
 
 struct simple_ipa_opt_pass pass_ipa_function_and_variable_visibility =
 }
 
 struct simple_ipa_opt_pass pass_ipa_function_and_variable_visibility =
index 5401017..dea51b0 100644 (file)
@@ -32,7 +32,7 @@ along with GCC; see the file COPYING3.  If not see
    The above will print something like
    /tmp/ccwbQ8B2.lto.o
 
    The above will print something like
    /tmp/ccwbQ8B2.lto.o
 
-   If -fwhopr is used instead, more than one file might be produced
+   If WHOPR is used instead, more than one file might be produced
    ./ccXj2DTk.lto.ltrans.o
    ./ccCJuXGv.lto.ltrans.o
 */
    ./ccXj2DTk.lto.ltrans.o
    ./ccCJuXGv.lto.ltrans.o
 */
@@ -304,6 +304,7 @@ run_gcc (unsigned argc, char *argv[])
   bool seen_o = false;
   int parallel = 0;
   int jobserver = 0;
   bool seen_o = false;
   int parallel = 0;
   int jobserver = 0;
+  bool no_partition = false;
 
   /* Get the driver and options.  */
   collect_gcc = getenv ("COLLECT_GCC");
 
   /* Get the driver and options.  */
   collect_gcc = getenv ("COLLECT_GCC");
@@ -366,15 +367,16 @@ run_gcc (unsigned argc, char *argv[])
        if (strcmp (option, "-v") == 0)
          verbose = 1;
 
        if (strcmp (option, "-v") == 0)
          verbose = 1;
 
+       if (strcmp (option, "-flto-partition=none") == 0)
+         no_partition = true;
        /* We've handled these LTO options, do not pass them on.  */
        /* We've handled these LTO options, do not pass them on.  */
-       if (strcmp (option, "-flto") == 0)
-         lto_mode = LTO_MODE_LTO;
-       else if (strncmp (option, "-fwhopr", 7) == 0)
+       if (strncmp (option, "-flto=", 6) == 0
+           || !strcmp (option, "-flto"))
          {
            lto_mode = LTO_MODE_WHOPR;
          {
            lto_mode = LTO_MODE_WHOPR;
-           if (option[7] == '=')
+           if (option[5] == '=')
              {
              {
-               if (!strcmp (option + 8, "jobserver"))
+               if (!strcmp (option + 6, "jobserver"))
                  {
                    jobserver = 1;
                    parallel = 1;
                  {
                    jobserver = 1;
                    parallel = 1;
@@ -390,6 +392,12 @@ run_gcc (unsigned argc, char *argv[])
        else
          *argv_ptr++ = option;
       }
        else
          *argv_ptr++ = option;
       }
+  if (no_partition)
+    {
+      lto_mode = LTO_MODE_LTO;
+      jobserver = 0;
+      parallel = 0;
+    }
 
   if (linker_output)
     {
 
   if (linker_output)
     {
index 53ae596..085bc25 100644 (file)
@@ -1218,7 +1218,7 @@ finish_options (struct gcc_options *opts, struct gcc_options *opts_set)
       opts->x_flag_ipa_struct_reorg = 0;
     }
 
       opts->x_flag_ipa_struct_reorg = 0;
     }
 
-  if (opts->x_flag_lto || opts->x_flag_whopr)
+  if (opts->x_flag_lto)
     {
 #ifdef ENABLE_LTO
       opts->x_flag_generate_lto = 1;
     {
 #ifdef ENABLE_LTO
       opts->x_flag_generate_lto = 1;
@@ -1231,20 +1231,17 @@ finish_options (struct gcc_options *opts, struct gcc_options *opts_set)
       error ("LTO support has not been enabled in this configuration");
 #endif
     }
       error ("LTO support has not been enabled in this configuration");
 #endif
     }
-  if (opts->x_flag_lto_partition_balanced || opts->x_flag_lto_partition_1to1)
+  if ((opts->x_flag_lto_partition_balanced != 0) + (opts->x_flag_lto_partition_1to1 != 0)
+       + (opts->x_flag_lto_partition_none != 0) >= 1)
     {
     {
-      if (opts->x_flag_lto_partition_balanced
-         && opts->x_flag_lto_partition_1to1)
+      if ((opts->x_flag_lto_partition_balanced != 0)
+          + (opts->x_flag_lto_partition_1to1 != 0)
+          + (opts->x_flag_lto_partition_none != 0) > 1)
        error ("only one -flto-partition value can be specified");
        error ("only one -flto-partition value can be specified");
-      if (!opts->x_flag_whopr && !opts->x_flag_wpa && !opts->x_flag_ltrans)
-       error ("-flto-partition has no effect without -fwhopr");
+      if (!opts->x_flag_lto && !opts->x_flag_wpa && !opts->x_flag_ltrans)
+       error ("-flto-partition has no effect without -flto");
     }
 
     }
 
-  /* Reconcile -flto and -fwhopr.  Set additional flags as appropriate and
-     check option consistency.  */
-  if (opts->x_flag_lto && opts->x_flag_whopr)
-    error ("-flto and -fwhopr are mutually exclusive");
-
   /* We initialize opts->x_flag_split_stack to -1 so that targets can set a
      default value if they choose based on other options.  */
   if (opts->x_flag_split_stack == -1)
   /* We initialize opts->x_flag_split_stack to -1 so that targets can set a
      default value if they choose based on other options.  */
   if (opts->x_flag_split_stack == -1)
@@ -2152,8 +2149,8 @@ common_handle_option (struct gcc_options *opts,
       dc->pedantic_errors = 1;
       break;
 
       dc->pedantic_errors = 1;
       break;
 
-    case OPT_fwhopr:
-      opts->x_flag_whopr = "";
+    case OPT_flto:
+      opts->x_flag_lto = "";
       break;
 
     case OPT_w:
       break;
 
     case OPT_w:
index 821ad57..e67254d 100644 (file)
@@ -1,5 +1,55 @@
 2010-11-11  Jan Hubicka  <jh@suse.cz>
 
 2010-11-11  Jan Hubicka  <jh@suse.cz>
 
+       * gcc.dg/20081223-1.c: Update LTO options.
+       * gcc.dg/lto/20090206-1_0.c: Update LTO options.
+       * gcc.dg/lto/20081118_0.c: Update LTO options.
+       * gcc.dg/lto/ipareference_0.c: Update LTO options.
+       * gcc.dg/lto/20100423-2_0.c: Update LTO options.
+       * gcc.dg/lto/20081201-1_0.c: Update LTO options.
+       * gcc.dg/lto/ipacp_0.c: Update LTO options.
+       * gcc.dg/lto/20090116_0.c: Update LTO options.
+       * gcc.dg/lto/20091015-1_0.c: Update LTO options.
+       * gcc.dg/lto/20090126-2_0.c: Update LTO options.
+       * gcc.dg/lto/20081202-2_0.c: Update LTO options.
+       * gcc.dg/lto/20081204-1_0.c: Update LTO options.
+       * gcc.dg/lto/const-uniq_0.c: Update LTO options.
+       * gcc.dg/lto/20081224_0.c: Update LTO options.
+       * gcc.dg/lto/20090219_0.c: Update LTO options.
+       * gcc.dg/lto/ipareference2_0.c: Update LTO options.
+       * gcc.dg/lto/20090206-2_0.c: Update LTO options.
+       * gcc.dg/lto/20081115_0.c: Update LTO options.
+       * gcc.dg/lto/20081201-2_0.c: Update LTO options.
+       * gcc.dg/lto/20081120-2_0.c: Update LTO options.
+       * gcc.dg/lto/materialize-1_0.c: Update LTO options.
+       * gcc.dg/lto/20090126-1_0.c: Update LTO options.
+       * gcc.dg/lto/20081202-1_0.c: Update LTO options.
+       * gcc.dg/lto/noreturn-1_0.c: Update LTO options.
+       * g++.dg/20090107-1.C: Update LTO options.
+       * g++.dg/lto/pr45679-2_0.C: Update LTO options.
+       * g++.dg/lto/20081123_0.C: Update LTO options.
+       * g++.dg/lto/20090313_0.C: Update LTO options.
+       * g++.dg/lto/20081125_0.C: Update LTO options.
+       * g++.dg/lto/20081109-1_0.C: Update LTO options.
+       * g++.dg/lto/20081219_0.C: Update LTO options.
+       * g++.dg/lto/20100724-1_0.C: Update LTO options.
+       * g++.dg/lto/20081204-1_0.C: Update LTO options.
+       * g++.dg/lto/20090303_0.C: Update LTO options.
+       * g++.dg/lto/20100723-1_0.C: Update LTO options.
+       * g++.dg/lto/pr45679-1_0.C: Update LTO options.
+       * g++.dg/lto/20090128_0.C: Update LTO options.
+       * g++.dg/lto/20081204-2_0.C: Update LTO options.
+       * g++.dg/lto/20090302_0.C: Update LTO options.
+       * g++.dg/lto/20081119-1_0.C: Update LTO options.
+       * g++.dg/lto/20081118_0.C: Update LTO options.
+       * g++.dg/20090121-1.C: Update LTO options.
+       * objc.dg/lto/lto.exp: Update LTO options.
+       * lib/lto.exp: Update LTO options.
+       * lib/gcc-dg.exp: Update LTO options.
+       * lib/c-torture.exp: Update LTO options.
+       * obj-c++.dg/lto/lto.exp: Update LTO options.
+
+2010-11-11  Jan Hubicka  <jh@suse.cz>
+
        PR tree-optimize/40436
        * gcc.dg/tree-ssa/inline-5.c: New testcase.
        * gcc.dg/tree-ssa/inline-6.c: New testcase.
        PR tree-optimize/40436
        * gcc.dg/tree-ssa/inline-5.c: New testcase.
        * gcc.dg/tree-ssa/inline-6.c: New testcase.
index 7c50675..ff586e8 100644 (file)
@@ -1,6 +1,6 @@
 /* { dg-do compile } */
 /* { dg-require-effective-target lto } */
 /* { dg-do compile } */
 /* { dg-require-effective-target lto } */
-/* { dg-options "-fwhopr -Wuninitialized -O1" }  */
+/* { dg-options "-flto -Wuninitialized -O1" }  */
 
 template <typename T> struct Q1 { typedef int x; };
 template <typename T> struct Q2 {
 
 template <typename T> struct Q1 { typedef int x; };
 template <typename T> struct Q2 {
index 9dff0f8..ddfa3ad 100644 (file)
@@ -1,6 +1,6 @@
 // { dg-do compile }
 // { dg-require-effective-target lto }
 // { dg-do compile }
 // { dg-require-effective-target lto }
-// { dg-options "-fwhopr -Wuninitialized -O2" }
+// { dg-options "-flto -Wuninitialized -O2" }
 class A
 {
 private:
 class A
 {
 private:
index 58be091..474ceba 100644 (file)
@@ -1,5 +1,5 @@
 // { dg-lto-do link }
 // { dg-lto-do link }
-// { dg-lto-options {{-fPIC -fwhopr}} }
-// { dg-extra-ld-options "-fPIC -fwhopr -r -nostdlib -fno-exceptions" }
+// { dg-lto-options {{-fPIC -flto -flto-partition=1to1}} }
+// { dg-extra-ld-options "-fPIC -flto -flto-partition=1to1 -r -nostdlib -fno-exceptions" }
 void func(); class Foo { };
 void bar() { try { func(); } catch (Foo) { } };
 void func(); class Foo { };
 void bar() { try { func(); } catch (Foo) { } };
index 5b5c82c..f11c76b 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-lto-do link } */
 /* { dg-lto-do link } */
-/* { dg-lto-options {{-fPIC -fwhopr -r -nostdlib}} } */
+/* { dg-lto-options {{-fPIC -flto -flto-partition=1to1 -r -nostdlib}} } */
 
 /* We used to ICE because of dangling pointers.  */
 
 
 /* We used to ICE because of dangling pointers.  */
 
index 5513db2..a2d5bd3 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-lto-do link } */
 /* { dg-lto-do link } */
-/* { dg-lto-options {{-fPIC -fwhopr -r -nostdlib}} } */
+/* { dg-lto-options {{-fPIC -flto -flto-partition=1to1 -r -nostdlib}} } */
 
 #include "20081119-1.h"
 
 
 #include "20081119-1.h"
 
index 3177063..8817be8 100644 (file)
@@ -1,5 +1,5 @@
 // { dg-lto-do link }
 // { dg-lto-do link }
-// { dg-lto-options {{-fwhopr -r -nostdlib -fPIC}} }
+// { dg-lto-options {{-flto -flto-partition=1to1 -r -nostdlib -fPIC}} }
 
 int
 f(void)
 
 int
 f(void)
index ade9744..629c2b3 100644 (file)
@@ -1,5 +1,5 @@
 // { dg-lto-do link }
 // { dg-lto-do link }
-// { dg-lto-options {{-fwhopr}} }
+// { dg-lto-options {{-flto -flto-partition=1to1}} }
 #include "20081125.h"
 
 object::object (int x)
 #include "20081125.h"
 
 object::object (int x)
index a94b482..0d24878 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-lto-do link } */
 /* { dg-lto-do link } */
-/* { dg-lto-options {{-fwhopr -fPIC -r -nostdlib}} } */
+/* { dg-lto-options {{-flto -flto-partition=1to1 -fPIC -r -nostdlib}} } */
 
 /* Tests for the absence during linking of:
    lto1: error: type of '_ZTVN10__cxxabiv120__si_class_type_infoE' does
 
 /* Tests for the absence during linking of:
    lto1: error: type of '_ZTVN10__cxxabiv120__si_class_type_infoE' does
index dfae081..81a4269 100644 (file)
@@ -1,5 +1,5 @@
 // { dg-lto-do link }
 // { dg-lto-do link }
-// { dg-lto-options {{-fwhopr -O3}} }
+// { dg-lto-options {{-flto -flto-partition=1to1 -O3}} }
 extern void foo (void);
 
 int
 extern void foo (void);
 
 int
index fd4c973..432a60c 100644 (file)
@@ -1,6 +1,6 @@
 // { dg-lto-do link }
 // { dg-lto-do link }
-// { dg-lto-options {{-fPIC -fwhopr -O2}} }
-// { dg-extra-ld-options "-O2 -fPIC -fwhopr -r -nostdlib" }
+// { dg-lto-options {{-fPIC -flto -flto-partition=1to1 -O2}} }
+// { dg-extra-ld-options "-O2 -fPIC -flto -flto-partition=1to1 -r -nostdlib" }
 
 typedef long int ptrdiff_t;
 extern "C"
 
 typedef long int ptrdiff_t;
 extern "C"
index 24ff597..d03cfc6 100644 (file)
@@ -1,5 +1,5 @@
 // { dg-lto-do assemble }
 // { dg-lto-do assemble }
-// { dg-lto-options {{-fpreprocessed -O2 -fwhopr -funsigned-char}} }
+// { dg-lto-options {{-fpreprocessed -O2 -flto -flto-partition=1to1 -funsigned-char}} }
 typedef unsigned char uint8;
 extern const uint8 array[256];
 static inline bool
 typedef unsigned char uint8;
 extern const uint8 array[256];
 static inline bool
index 21200a2..76de7ba 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-lto-do link } */
 /* { dg-lto-do link } */
-/* { dg-lto-options {{-fPIC -fwhopr -r -nostdlib}} } */
+/* { dg-lto-options {{-fPIC -flto -flto-partition=1to1 -r -nostdlib}} } */
 struct Foo {
   bool Mumble();
   static void Bar() { if (foo_->Mumble()) foo_ = 0; }
 struct Foo {
   bool Mumble();
   static void Bar() { if (foo_->Mumble()) foo_ = 0; }
index f6d5512..f2d112f 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-lto-do run } */
 /* { dg-lto-do run } */
-/* { dg-lto-options {{-fwhopr -fPIC}} } */
+/* { dg-lto-options {{-flto -flto-partition=1to1 -fPIC}} } */
 /* { dg-suppress-ld-options {-fPIC} }  */
 void foobar(int *, int* __x)    ;
 int test_ints[30];
 /* { dg-suppress-ld-options {-fPIC} }  */
 void foobar(int *, int* __x)    ;
 int test_ints[30];
index b000200..70029e6 100644 (file)
@@ -1,5 +1,5 @@
 // { dg-lto-do link }
 // { dg-lto-do link }
-// { dg-lto-options {{-fwhopr -fPIC}} }
-// { dg-extra-ld-options "-fwhopr -r -nostdlib" }
+// { dg-lto-options {{-flto -flto-partition=1to1 -fPIC}} }
+// { dg-extra-ld-options "-flto -flto-partition=1to1 -r -nostdlib" }
 
 int X;
 
 int X;
index e8d3c8c..d399635 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-lto-do link } */
 /* { dg-lto-do link } */
-/* { dg-lto-options {{-fcompare-debug -flto} {-fcompare-debug -fwhopr}} } */
+/* { dg-lto-options {{-fcompare-debug -flto -flto-partition=none} {-fcompare-debug -flto -flto-partition=1to1}} } */
 
 struct S {
     virtual void f() { }
 
 struct S {
     virtual void f() { }
index f652619..084c07f 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-lto-do link } */
 /* { dg-lto-do link } */
-/* { dg-lto-options {{-ftoplevel-reorder -flto} {-ftoplevel-reorder -fwhopr}} } */
+/* { dg-lto-options {{-ftoplevel-reorder -flto -flto-partition=none} {-ftoplevel-reorder -flto -flto-partition=1to1}} } */
 /* { dg-extra-ld-options {-r -nostdlib} } */
 
 struct Foo { virtual ~Foo(); };
 /* { dg-extra-ld-options {-r -nostdlib} } */
 
 struct Foo { virtual ~Foo(); };
index 05f7b55..349f5c2 100644 (file)
@@ -1,6 +1,6 @@
 // { dg-lto-do link }
 // { dg-lto-options {{-O3 -Wno-multichar}} } 
 // { dg-lto-do link }
 // { dg-lto-options {{-O3 -Wno-multichar}} } 
-// { dg-extra-ld-options "-fwhopr -r -nostdlib" }
+// { dg-extra-ld-options "-flto -flto-partition=1to1 -r -nostdlib" }
 
      extern "C" {
    typedef struct __locale_struct {
 
      extern "C" {
    typedef struct __locale_struct {
index dcc53a6..5497419 100644 (file)
@@ -1,6 +1,6 @@
 // { dg-lto-do link }
 // { dg-lto-options {{-O3 -Wno-multichar}} } 
 // { dg-lto-do link }
 // { dg-lto-options {{-O3 -Wno-multichar}} } 
-// { dg-extra-ld-options "-fwhopr -r -nostdlib" }
+// { dg-extra-ld-options "-flto -flto-partition=1to1 -r -nostdlib" }
     extern "C" {
   typedef struct {
     union   {
     extern "C" {
   typedef struct {
     union   {
index 3c36955..6bfbd17 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-do compile } */
 /* { dg-do compile } */
-/* { dg-options "-fwhopr" { target lto } }  */
+/* { dg-options "-flto" { target lto } }  */
 
 typedef struct foo_ foo_t;
 foo_t bar;  /* { dg-error "storage size of 'bar' isn't known" }  */
 
 typedef struct foo_ foo_t;
 foo_t bar;  /* { dg-error "storage size of 'bar' isn't known" }  */
index f24a92d..c9f4c80 100644 (file)
@@ -1,4 +1,4 @@
-/* { dg-lto-options {{-O2 -DOPTIMIZE -fwhopr} {-O0 -fwhopr}} } */
+/* { dg-lto-options {{-O2 -DOPTIMIZE -flto -flto-partition=1to1} {-O0 -flto -flto-partition=1to1}} } */
 
 extern void abort (void);
 
 
 extern void abort (void);
 
index 0640428..b37eb31 100644 (file)
@@ -1,4 +1,4 @@
-/* { dg-lto-options {{-O2 -DOPTIMIZE -fwhopr} {-O0 -fwhopr}} } */
+/* { dg-lto-options {{-O2 -DOPTIMIZE -flto -flto-partition=1to1} {-O0 -flto -flto-partition=1to1}} } */
 
 extern void abort (void);
 extern int f (void);
 
 extern void abort (void);
 extern int f (void);
index 19c4ab3..e2e11d6 100644 (file)
@@ -1,3 +1,3 @@
 /* { dg-lto-do link } */
 /* { dg-lto-do link } */
-/* { dg-lto-options {{-fwhopr -r -nostdlib}} } */
+/* { dg-lto-options {{-flto -flto-partition=1to1 -r -nostdlib}} } */
 void bar(void) {}
 void bar(void) {}
index 05cbb82..b689644 100644 (file)
@@ -1,4 +1,4 @@
-/* { dg-lto-options {{-O2 -DOPTIMIZE -fwhopr} {-O0 -fwhopr}} } */
+/* { dg-lto-options {{-O2 -DOPTIMIZE -flto -flto-partition=1to1} {-O0 -flto -flto-partition=1to1}} } */
 
 extern void abort (void);
 
 
 extern void abort (void);
 
index 4c1510d..fd021eb 100644 (file)
@@ -1,4 +1,4 @@
-/* { dg-lto-options {{-O3 -fwhopr}} } */
+/* { dg-lto-options {{-O3 -flto -flto-partition=1to1}} } */
 
 /* Test that cross-TU inlining works.  */
 
 
 /* Test that cross-TU inlining works.  */
 
index 933610a..1bdb91f 100644 (file)
@@ -1,4 +1,4 @@
-/* { dg-lto-options {{-fwhopr -O3}} } */
+/* { dg-lto-options {{-flto -flto-partition=1to1 -O3}} } */
 
 extern void exit (int);
 extern void foo (void);
 
 extern void exit (int);
 extern void foo (void);
index 09f4176..9d34f74 100644 (file)
@@ -1,4 +1,4 @@
-/* { dg-lto-options {{-fwhopr -O3}} } */
+/* { dg-lto-options {{-flto -flto-partition=1to1 -O3}} } */
 
 extern void exit (int);
 extern void *foo (void);
 
 extern void exit (int);
 extern void *foo (void);
index 5952b07..a4b25ff 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-lto-do link } */
 /* { dg-lto-do link } */
-/* { dg-lto-options {{-fwhopr -fPIC -r -nostdlib}} } */
+/* { dg-lto-options {{-flto -flto-partition=1to1 -fPIC -r -nostdlib}} } */
 
 /* Tests for the absence during linking of:
    lto1: error: type of 'i' does not match original declaration  */
 
 /* Tests for the absence during linking of:
    lto1: error: type of 'i' does not match original declaration  */
index 9c784fe..d050e23 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-lto-do link } */
 /* { dg-lto-do link } */
-/* { dg-lto-options {{-fwhopr -r -nostdlib -fPIC}} } */
+/* { dg-lto-options {{-flto -flto-partition=1to1 -r -nostdlib -fPIC}} } */
 #include "20081224_0.h"
 
 extern struct foo x;
 #include "20081224_0.h"
 
 extern struct foo x;
index 9fd83ca..5bb3a91 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-lto-do link } */
 /* { dg-lto-do link } */
-/* { dg-lto-options {{-O1 -fwhopr -fPIC}} } */
+/* { dg-lto-options {{-O1 -flto -flto-partition=1to1 -fPIC}} } */
 /* { dg-extra-ld-options {-r -nostdlib -O0} } */
 
 int foo(void) {
 /* { dg-extra-ld-options {-r -nostdlib -O0} } */
 
 int foo(void) {
index b2a25b2..01a1299 100644 (file)
@@ -1,6 +1,6 @@
 /* { dg-lto-do link } */
 /* { dg-lto-do link } */
-/* { dg-lto-options {{-O0 -fwhopr}} } */
-/* { dg-extra-ld-options {-r -nostdlib -O2 -fwhopr} } */
+/* { dg-lto-options {{-O0 -flto -flto-partition=1to1}} } */
+/* { dg-extra-ld-options {-r -nostdlib -O2 -flto -flto-partition=1to1} } */
 
 int main(int argc, char **argv) {
   return 0;
 
 int main(int argc, char **argv) {
   return 0;
index a366c18..2239412 100644 (file)
@@ -1,6 +1,6 @@
 /* { dg-lto-do link } */
 /* { dg-lto-do link } */
-/* { dg-lto-options {{-fPIC -O2 -fwhopr}} } */
-/* { dg-extra-ld-options {-fno-PIC -r -nostdlib -O2 -fwhopr} } */
+/* { dg-lto-options {{-fPIC -O2 -flto -flto-partition=1to1}} } */
+/* { dg-extra-ld-options {-fno-PIC -r -nostdlib -O2 -flto -flto-partition=1to1} } */
 
 int main(int argc, char **argv) {
   return 0;
 
 int main(int argc, char **argv) {
   return 0;
index 1fabb91..c9fc973 100644 (file)
@@ -1,6 +1,6 @@
 /* { dg-lto-do link } */
 /* { dg-skip-if "" { ! { i?86-*-linux* x86_64-*-linux* } } { "*" } { "" } } */
 /* { dg-lto-do link } */
 /* { dg-skip-if "" { ! { i?86-*-linux* x86_64-*-linux* } } { "*" } { "" } } */
-/* { dg-lto-options {{-fPIC -r -nostdlib -fwhopr -msse2}} } */
+/* { dg-lto-options {{-fPIC -r -nostdlib -flto -flto-partition=1to1 -msse2}} } */
 /* { dg-require-effective-target sse2 } */
 /* { dg-suppress-ld-options {-fPIC -msse2} } */
 
 /* { dg-require-effective-target sse2 } */
 /* { dg-suppress-ld-options {-fPIC -msse2} } */
 
index 3e85c5d..4ca80ea 100644 (file)
@@ -1,6 +1,6 @@
 /* { dg-lto-do link } */
 /* { dg-skip-if "" { ! { i?86-*-linux* x86_64-*-linux* } } { "*" } { "" } } */
 /* { dg-lto-do link } */
 /* { dg-skip-if "" { ! { i?86-*-linux* x86_64-*-linux* } } { "*" } { "" } } */
-/* { dg-lto-options {{-fwhopr -fPIC}} } */
+/* { dg-lto-options {{-flto -flto-partition=1to1 -fPIC}} } */
 /* { dg-suppress-ld-options {-fPIC} } */
 
 void func(int n) {
 /* { dg-suppress-ld-options {-fPIC} } */
 
 void func(int n) {
index b93dd1f..81a93e6 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-lto-do link } */
 /* { dg-lto-do link } */
-/* { dg-lto-options {{-O3 -fwhopr -fPIC -r -nostdlib}} } */
+/* { dg-lto-options {{-O3 -flto -flto-partition=1to1 -fPIC -r -nostdlib}} } */
 
 struct Foo { int f1, f2, f3, f4, f5; };
 
 
 struct Foo { int f1, f2, f3, f4, f5; };
 
index d55ebcf..1cc4b78 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-lto-do link } */
 /* { dg-lto-do link } */
-/* { dg-lto-options {{-fPIC -r -nostdlib -O2 -flto} {-fPIC -r -nostdlib -O2 -fwhopr}} } */
+/* { dg-lto-options {{-fPIC -r -nostdlib -O2 -flto} {-fPIC -r -nostdlib -O2 -flto -flto-partition=1to1}} } */
 
 #include "20091015-1_b.h"
 void diagnostic_initialize (FILE **stream) { *stream = stderr; }
 
 #include "20091015-1_b.h"
 void diagnostic_initialize (FILE **stream) { *stream = stderr; }
index 58456d4..eb93165 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-lto-do run } */
 /* { dg-lto-do run } */
-/* { dg-lto-options {{-O2 -flto}} } */
+/* { dg-lto-options {{-O2 -flto -flto-partition=none}} } */
 
 struct bar {int x;};
 extern struct bar foo(void);
 
 struct bar {int x;};
 extern struct bar foo(void);
index 791b1ba..f546757 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-lto-do link } */
 /* { dg-lto-do link } */
-/* { dg-lto-options {{-O2 -flto} {-O2 -fwhopr} {-O3 -flto} {-O3 -fwhopr}} } */
+/* { dg-lto-options {{-O2 -flto -flto-partition=none} {-O2 -flto -flto-partition=1to1} {-O3 -flto -flto-partition=none} {-O3 -flto -flto-partition=1to1}} } */
 
 #include <stdio.h>
 
 
 #include <stdio.h>
 
index 746167c..1bbc7f4 100644 (file)
@@ -1,7 +1,7 @@
 /* The 3 constant initializers should be uniquized.  */
 
 /* { dg-lto-do run } */
 /* The 3 constant initializers should be uniquized.  */
 
 /* { dg-lto-do run } */
-/* { dg-lto-options {{-Os -flto} {-Os -fwhopr} } } */
+/* { dg-lto-options {{-Os -flto -flto-partition=none} {-Os -flto -flto-partition=1to1} } } */
 
 int lookup1 (int i)
 {
 
 int lookup1 (int i)
 {
index 3212261..097c1c2 100644 (file)
@@ -1,4 +1,4 @@
-/* { dg-lto-options {{ -O1 -fwhopr -fipa-cp -fipa-cp-clone}} } */
+/* { dg-lto-options {{ -O1 -flto -flto-partition=1to1 -fipa-cp -fipa-cp-clone}} } */
 /* { dg-lto-do run } */
 
 /* Test that clonning happens and we unify declarations of a from both units.  */
 /* { dg-lto-do run } */
 
 /* Test that clonning happens and we unify declarations of a from both units.  */
index b7b13e6..f7ae0b4 100644 (file)
@@ -1,4 +1,4 @@
-/* { dg-lto-options {{ -O1 -fwhopr -fwhole-program}} } */
+/* { dg-lto-options {{ -O1 -flto -flto-partition=1to1 -fwhole-program}} } */
 /* { dg-lto-do run } */
 
 /* Verify that ipa-reference marks A as constant and we fold references
 /* { dg-lto-do run } */
 
 /* Verify that ipa-reference marks A as constant and we fold references
index c759b75..f8970f0 100644 (file)
@@ -1,4 +1,4 @@
-/* { dg-lto-options {{ -O1 -fwhopr }} } */
+/* { dg-lto-options {{ -O1 -flto -flto-partition=1to1 }} } */
 /* { dg-lto-do run } */
 
 /* Test that ipa-reference notice that get_val will not change since do_nothing does not
 /* { dg-lto-do run } */
 
 /* Test that ipa-reference notice that get_val will not change since do_nothing does not
index 16c182f..1751d65 100644 (file)
@@ -1,4 +1,4 @@
-/* { dg-lto-options {{ -O3 -fwhopr}} } */
+/* { dg-lto-options {{ -O3 -flto -flto-partition=1to1}} } */
 /* { dg-lto-do run } */
 extern void clone_me (int, int);
 int a=15;
 /* { dg-lto-do run } */
 extern void clone_me (int, int);
 int a=15;
index f10081a..7f493cd 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-lto-do run } */
 /* { dg-lto-do run } */
-/* { dg-lto-options {{-O2 -fwhopr} } } */
+/* { dg-lto-options {{-O2 -flto -flto-partition=1to1} } } */
 
 void exit (int);
 __attribute__ ((noreturn))
 
 void exit (int);
 __attribute__ ((noreturn))
index 8b15b57..551de7d 100644 (file)
@@ -53,8 +53,8 @@ if [info exists ADDITIONAL_TORTURE_OPTIONS] {
 set LTO_TORTURE_OPTIONS ""
 if [check_effective_target_lto] {
     set LTO_TORTURE_OPTIONS [list \
 set LTO_TORTURE_OPTIONS ""
 if [check_effective_target_lto] {
     set LTO_TORTURE_OPTIONS [list \
-       { -O2 -flto } \
-       { -O2 -fwhopr }
+       { -O2 -flto -flto-partition=none } \
+       { -O2 -flto }
     ]
 }
 
     ]
 }
 
index e52a23f..4cdfa3e 100644 (file)
@@ -70,8 +70,8 @@ if [info exists ADDITIONAL_TORTURE_OPTIONS] {
 set LTO_TORTURE_OPTIONS ""
 if [check_effective_target_lto] {
     set LTO_TORTURE_OPTIONS [list \
 set LTO_TORTURE_OPTIONS ""
 if [check_effective_target_lto] {
     set LTO_TORTURE_OPTIONS [list \
-       { -O2 -flto } \
-       { -O2 -fwhopr }
+       { -O2 -flto -flto-partition=none } \
+       { -O2 -flto }
     ]
 }
 
     ]
 }
 
index 36bc72a..f4469ee 100644 (file)
@@ -64,8 +64,10 @@ proc lto_init { args } {
     # add it to site.exp directly.
     if ![info exists LTO_OPTIONS] {
        set LTO_OPTIONS [list   \
     # add it to site.exp directly.
     if ![info exists LTO_OPTIONS] {
        set LTO_OPTIONS [list   \
-           {-O0 -fwhopr}       \
-           {-O2 -fwhopr}       \
+           {-O0 -flto -flto-partition=none } \
+           {-O2 -flto -flto-partition=none } \
+           {-O0 -flto -flto-partition=1to1 } \
+           {-O2 -flto -flto-partition=1to1 } \
            {-O0 -flto}         \
            {-O2 -flto}         \
        ]
            {-O0 -flto}         \
            {-O2 -flto}         \
        ]
index 291895f..4ae08c1 100644 (file)
@@ -41,10 +41,10 @@ if { ![check_effective_target_lto] } {
 global LTO_OPTIONS
 
 set LTO_OPTIONS [list  \
 global LTO_OPTIONS
 
 set LTO_OPTIONS [list  \
-  {-O0 -fwhopr -fgnu-runtime}  \
-  {-O2 -fwhopr -fgnu-runtime}  \
-  {-O0 -flto -fgnu-runtime}    \
+  {-O0 -flto -fgnu-runtime}    \
   {-O2 -flto -fgnu-runtime}    \
   {-O2 -flto -fgnu-runtime}    \
+  {-O0 -flto -flto-partition=none -fgnu-runtime}       \
+  {-O2 -flto -flto-partition=none -fgnu-runtime}       \
 ]
 
 obj-c++_init
 ]
 
 obj-c++_init
@@ -67,10 +67,10 @@ foreach src $tests {
 # darwin targets can also run code with the NeXT runtime.
 if [istarget "*-*-darwin*" ] {
 set LTO_OPTIONS [list  \
 # darwin targets can also run code with the NeXT runtime.
 if [istarget "*-*-darwin*" ] {
 set LTO_OPTIONS [list  \
-  {-O0 -fwhopr -fnext-runtime} \
-  {-O2 -fwhopr -fnext-runtime} \
-  {-O0 -flto -fnext-runtime}   \
+  {-O0 -flto -fnext-runtime}   \
   {-O2 -flto -fnext-runtime}   \
   {-O2 -flto -fnext-runtime}   \
+  {-O0 -flto -flto-partition=none -fnext-runtime}      \
+  {-O2 -flto -flto-partition=none -fnext-runtime}      \
 ]
   foreach src $tests {
     # If we're only testing specific files and this isn't one of them, skip it.
 ]
   foreach src $tests {
     # If we're only testing specific files and this isn't one of them, skip it.
index 4ea89cc..f567cd9 100644 (file)
@@ -41,10 +41,10 @@ if { ![check_effective_target_lto] } {
 global LTO_OPTIONS
 
 set LTO_OPTIONS [list  \
 global LTO_OPTIONS
 
 set LTO_OPTIONS [list  \
-  {-O0 -fwhopr -fgnu-runtime}  \
-  {-O2 -fwhopr -fgnu-runtime}  \
-  {-O0 -flto -fgnu-runtime}    \
+  {-O0 -flto -fgnu-runtime}    \
   {-O2 -flto -fgnu-runtime}    \
   {-O2 -flto -fgnu-runtime}    \
+  {-O0 -flto -flto-partition=none -fgnu-runtime}       \
+  {-O2 -flto -flto-partition=none -fgnu-runtime}       \
 ]
 
 objc_init
 ]
 
 objc_init
@@ -67,10 +67,10 @@ foreach src $tests {
 # darwin targets can also run code with the NeXT runtime.
 if [istarget "*-*-darwin*" ] {
 set LTO_OPTIONS [list  \
 # darwin targets can also run code with the NeXT runtime.
 if [istarget "*-*-darwin*" ] {
 set LTO_OPTIONS [list  \
-  {-O0 -fwhopr -fnext-runtime} \
-  {-O2 -fwhopr -fnext-runtime} \
-  {-O0 -flto -fnext-runtime}   \
+  {-O0 -flto -fnext-runtime}   \
   {-O2 -flto -fnext-runtime}   \
   {-O2 -flto -fnext-runtime}   \
+  {-O0 -flto -flto-partition=none -fnext-runtime}      \
+  {-O2 -flto -flto-partition=none -fnext-runtime}      \
 ]
   foreach src $tests {
     # If we're only testing specific files and this isn't one of them, skip it.
 ]
   foreach src $tests {
     # If we're only testing specific files and this isn't one of them, skip it.
index ff3631b..2a96d79 100644 (file)
@@ -343,7 +343,6 @@ decide_is_variable_needed (struct varpool_node *node, tree decl)
   if (TREE_PUBLIC (decl)
       && !flag_whole_program
       && !flag_lto
   if (TREE_PUBLIC (decl)
       && !flag_whole_program
       && !flag_lto
-      && !flag_whopr
       && !DECL_COMDAT (decl)
       && !DECL_EXTERNAL (decl))
     return true;
       && !DECL_COMDAT (decl)
       && !DECL_EXTERNAL (decl))
     return true;