http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50602

--- Comment #19 from Richard Guenther <rguenth at gcc dot gnu.org> 2012-05-04 
11:00:36 UTC ---
Patch I am testing:

Index: gcc/lto-wrapper.c
===================================================================
--- gcc/lto-wrapper.c   (revision 187148)
+++ gcc/lto-wrapper.c   (working copy)
@@ -414,6 +414,16 @@ merge_and_complain (struct cl_decoded_op
          if (j == *decoded_options_count)
            append_option (decoded_options, decoded_options_count, foption);
          break;
+
+       case OPT_freg_struct_return:
+       case OPT_fpcc_struct_return:
+         for (j = 0; j < *decoded_options_count; ++j)
+           if ((*decoded_options)[j].opt_index == foption->opt_index)
+             break;
+         if (j == *decoded_options_count)
+           fatal ("Option %s not used consistently in all LTO input files",
+                  foption->orig_option_with_args_text);
+         break;
        }
     }
 }
@@ -558,6 +568,8 @@ run_gcc (unsigned argc, char *argv[])
        case OPT_fcommon:
        case OPT_fexceptions:
        case OPT_fgnu_tm:
+       case OPT_freg_struct_return:
+       case OPT_fpcc_struct_return:
          break;

        default:
@@ -619,6 +631,12 @@ run_gcc (unsigned argc, char *argv[])
          /* We've handled these LTO options, do not pass them on.  */
          continue;

+       case OPT_freg_struct_return:
+       case OPT_fpcc_struct_return:
+         /* Ignore these, they are determined by the input files.
+            ???  We fail to diagnose a possible mismatch here.  */
+         continue;
+
        default:
          break;
        }

Reply via email to