patches/gcc/4.3.1/340-make-mno-spe-work-as-expected.patch
author Daniel Price <daniel.price@gmail.com>
Tue Nov 20 16:59:17 2012 -0800 (2012-11-20)
changeset 3126 333d3e40cbd1
permissions -rw-r--r--
scripts: refine static linking check to better guide the user

The current mechanism to check if static linking is possible, and the mesage
displayed on failure, can be puzzling to the unsuspecting user.

Also, the current implementation is not using the existing infrastructure,
and is thus difficult to enhance with new tests.

So, switch to using the standard CT_DoExecLog infra, and use four tests to
check for the host compiler:
- check we can run it
- check it can build a trivial program
- check it can statically link that program
- check if it statically link with libstdc++

That should cover most of the problems. Hopefully.

(At the same time, fix a typo in a comment)

Signed-off-by: Daniel Price <daniel.price@gmail.com>
[yann.morin.1998@free.fr: split original patch for self-contained changes]
[yann.morin.1998@free.fr: use steps to better see gcc's output]
[yann.morin.1998@free.fr: commit log]
Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Message-Id: <163f86b5216fc08c672a.1353459722@nipigon.dssd.com>
Patchwork-Id: 200536
     1 2008-04-03  Nathan Froyd  <froydnj@codesourcery.com>
     2 	    Nathan Sidwell  <nathan@codesourcery.com>
     3 
     4         * config/rs6000/rs6000.opt (mspe): Remove Var property.
     5 	(misel): Likewise.
     6         * config/rs6000/rs6000.h (rs6000_spe): Declare.
     7 	(rs6000_isel): Likewise.
     8         * config/rs6000/rs6000.c (rs6000_spe): New variable.
     9 	(rs6000_isel): New variable.
    10         (rs6000_handle_option): Handle OPT_mspe and OPT_misel.
    11 
    12 Index: gcc/config/rs6000/rs6000.c
    13 ===================================================================
    14 --- a/gcc/config/rs6000/rs6000.c	(revision 134642)
    15 +++ b/gcc/config/rs6000/rs6000.c	(working copy)
    16 @@ -174,9 +174,15 @@ int rs6000_ieeequad;
    17  /* Nonzero to use AltiVec ABI.  */
    18  int rs6000_altivec_abi;
    19  
    20 +/* Nonzero if we want SPE SIMD instructions.  */
    21 +int rs6000_spe;
    22 +
    23  /* Nonzero if we want SPE ABI extensions.  */
    24  int rs6000_spe_abi;
    25  
    26 +/* Nonzero to use isel instructions.  */
    27 +int rs6000_isel;
    28 +
    29  /* Nonzero if floating point operations are done in the GPRs.  */
    30  int rs6000_float_gprs = 0;
    31  
    32 @@ -2177,11 +2183,21 @@ rs6000_handle_option (size_t code, const
    33        rs6000_parse_yes_no_option ("vrsave", arg, &(TARGET_ALTIVEC_VRSAVE));
    34        break;
    35  
    36 +    case OPT_misel:
    37 +      rs6000_explicit_options.isel = true;
    38 +      rs6000_isel = value;
    39 +      break;
    40 +
    41      case OPT_misel_:
    42        rs6000_explicit_options.isel = true;
    43        rs6000_parse_yes_no_option ("isel", arg, &(rs6000_isel));
    44        break;
    45  
    46 +    case OPT_mspe:
    47 +      rs6000_explicit_options.spe = true;
    48 +      rs6000_spe = value;
    49 +      break;
    50 +
    51      case OPT_mspe_:
    52        rs6000_explicit_options.spe = true;
    53        rs6000_parse_yes_no_option ("spe", arg, &(rs6000_spe));
    54 Index: gcc/config/rs6000/rs6000.opt
    55 ===================================================================
    56 --- a/gcc/config/rs6000/rs6000.opt	(revision 134642)
    57 +++ b/gcc/config/rs6000/rs6000.opt	(working copy)
    58 @@ -190,7 +190,7 @@ Target RejectNegative Joined
    59  -mvrsave=yes/no	Deprecated option.  Use -mvrsave/-mno-vrsave instead
    60  
    61  misel
    62 -Target Var(rs6000_isel)
    63 +Target
    64  Generate isel instructions
    65  
    66  misel=
    67 @@ -198,7 +198,7 @@ Target RejectNegative Joined
    68  -misel=yes/no	Deprecated option.  Use -misel/-mno-isel instead
    69  
    70  mspe
    71 -Target Var(rs6000_spe)
    72 +Target
    73  Generate SPE SIMD instructions on E500
    74  
    75  mpaired
    76 Index: gcc/config/rs6000/rs6000.h
    77 ===================================================================
    78 --- a/gcc/config/rs6000/rs6000.h	(revision 134642)
    79 +++ b/gcc/config/rs6000/rs6000.h	(working copy)
    80 @@ -367,6 +367,8 @@ extern int rs6000_long_double_type_size;
    81  extern int rs6000_ieeequad;
    82  extern int rs6000_altivec_abi;
    83  extern int rs6000_spe_abi;
    84 +extern int rs6000_spe;
    85 +extern int rs6000_isel;
    86  extern int rs6000_float_gprs;
    87  extern int rs6000_alignment_flags;
    88  extern const char *rs6000_sched_insert_nops_str;
    89 
    90