From 4f67832ee1e9929d76bc05cd5daa1c2cf12d0dd0 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Mon, 11 Nov 2019 21:05:49 +0100 Subject: [PATCH] re PR bootstrap/92433 (r276645 breaks bootstrap on powerpc) PR bootstrap/92433 * config/rs6000/rs6000-c.c (altivec_build_resolved_builtin): Guard ALTIVEC_BUILTIN_VEC_VCMPGE_P argument swapping with n == 3 check. Use std::swap. From-SVN: r278066 --- gcc/ChangeLog | 7 +++++++ gcc/config/rs6000/rs6000-c.c | 10 +++++----- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 329d107a765..2d50a752ec1 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2019-11-11 Jakub Jelinek + + PR bootstrap/92433 + * config/rs6000/rs6000-c.c (altivec_build_resolved_builtin): Guard + ALTIVEC_BUILTIN_VEC_VCMPGE_P argument swapping with n == 3 check. Use + std::swap. + 2019-11-11 Richard Sandiford PR tree-optimization/92420 diff --git a/gcc/config/rs6000/rs6000-c.c b/gcc/config/rs6000/rs6000-c.c index bd4b19d5646..81db96f990f 100644 --- a/gcc/config/rs6000/rs6000-c.c +++ b/gcc/config/rs6000/rs6000-c.c @@ -6076,14 +6076,14 @@ altivec_build_resolved_builtin (tree *args, int n, condition (LT vs. EQ, which is recognizable by bit 1 of the first argument) is reversed. Patch the arguments here before building the resolved CALL_EXPR. */ - if (desc->code == ALTIVEC_BUILTIN_VEC_VCMPGE_P + if (n == 3 + && desc->code == ALTIVEC_BUILTIN_VEC_VCMPGE_P && desc->overloaded_code != ALTIVEC_BUILTIN_VCMPGEFP_P && desc->overloaded_code != VSX_BUILTIN_XVCMPGEDP_P) { - tree t; - t = args[2], args[2] = args[1], args[1] = t; - t = arg_type[2], arg_type[2] = arg_type[1], arg_type[1] = t; - + std::swap (args[1], args[2]); + std::swap (arg_type[1], arg_type[2]); + args[0] = fold_build2 (BIT_XOR_EXPR, TREE_TYPE (args[0]), args[0], build_int_cst (NULL_TREE, 2)); } -- 2.30.2