Hi, In function rs6000_option_override_internal, we have the checks and adjustments like:
if (TARGET_P8_VECTOR && !TARGET_ALTIVEC) rs6000_isa_flags &= ~OPTION_MASK_P8_VECTOR; if (TARGET_P8_VECTOR && !TARGET_VSX) rs6000_isa_flags &= ~OPTION_MASK_P8_VECTOR; But in fact some previous code has guaranteed !TARGET_VSX if !TARGET_ALTIVEC, so we can remove the former check and adjustment. This patch is to remove it accordingly and also place an explicit assertion. Bootstrapped and regtested on powerpc64-linux-gnu P8/P9 and powerpc64le-linux-gnu P9 and P10. I'm going to push this soon if no objections. BR, Kewen ----- gcc/ChangeLog: * config/rs6000/rs6000.cc (rs6000_option_override_internal): Remove useless check on TARGET_P8_VECTOR && !TARGET_ALTIVEC and add an assertion on !TARGET_VSX if !TARGET_ALTIVEC. --- gcc/config/rs6000/rs6000.cc | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/gcc/config/rs6000/rs6000.cc b/gcc/config/rs6000/rs6000.cc index 117999613d8..b5553e27aa3 100644 --- a/gcc/config/rs6000/rs6000.cc +++ b/gcc/config/rs6000/rs6000.cc @@ -3937,8 +3937,9 @@ rs6000_option_override_internal (bool global_init_p) rs6000_isa_flags &= ~OPTION_MASK_FPRND; } - if (TARGET_P8_VECTOR && !TARGET_ALTIVEC) - rs6000_isa_flags &= ~OPTION_MASK_P8_VECTOR; + /* Assert !TARGET_VSX if !TARGET_ALTIVEC and make some adjustments + based on either !TARGET_VSX or !TARGET_ALTIVEC concise. */ + gcc_assert (TARGET_ALTIVEC || !TARGET_VSX); if (TARGET_P8_VECTOR && !TARGET_VSX) rs6000_isa_flags &= ~OPTION_MASK_P8_VECTOR; -- 2.39.1