On Thu, 5 May 2011, Michael Eager wrote: > David Edelsohn wrote: > > On Wed, May 4, 2011 at 7:54 AM, Joseph S. Myers <jos...@codesourcery.com> > > wrote: > > > > > Two options, -mcmodel= and -mfpu=, had cases that fell through to the > > > next case without comments to indicate if this was intended. I added > > > comments to make the semantics explicit. Given the documentation, it > > > may well be intentional for -mcmodel= but is more doubtful for -mfpu=. > > > > I doubt that either of the fall through cases was intended. > > > > Alan, is mcmodel suppose to set m64? > > > > Michael, is mfpu suppose to set mrecip? > > No. There was a break statement at the end of case OPT_mfpu which > disappeared when OPT_mrecip was added.
Thanks. I'll apply this patch which removes the fall through, and adds explicit Var and Init to the mfpu= entry in rs6000.opt to avoid problems (when building as C++, as shown by a regression tester) with 0-initialization of the field that gets automatically generated by the .opt machinery for any Target option not using Var. 2011-05-05 Joseph Myers <jos...@codesourcery.com> * config/rs6000/rs6000.c (rs6000_handle_option): Don't fall through from -mfpu= handling. * config/rs6000/rs6000.opt (mfpu=): Use Var and Init. Index: gcc/config/rs6000/rs6000.opt =================================================================== --- gcc/config/rs6000/rs6000.opt (revision 173434) +++ gcc/config/rs6000/rs6000.opt (working copy) @@ -492,7 +492,7 @@ Target RejectNegative Var(rs6000_simple_ Floating point unit does not support divide & sqrt mfpu= -Target RejectNegative Joined Enum(fpu_type_t) +Target RejectNegative Joined Enum(fpu_type_t) Var(rs6000_fpu_type) Init(FPU_NONE) -mfpu= Specify FP (sp, dp, sp-lite, dp-lite) (implies -mxilinx-fpu) Enum Index: gcc/config/rs6000/rs6000.c =================================================================== --- gcc/config/rs6000/rs6000.c (revision 173434) +++ gcc/config/rs6000/rs6000.c (working copy) @@ -4480,7 +4480,7 @@ rs6000_handle_option (struct gcc_options opts_set->x_target_flags |= MASK_SOFT_FLOAT; opts->x_rs6000_single_float = opts->x_rs6000_double_float = 0; } - /* Fall through. */ + break; case OPT_mrecip: opts->x_rs6000_recip_name = (value) ? "default" : "none"; -- Joseph S. Myers jos...@codesourcery.com