From 08de4af3ea2b4e489fa52c4ccd2c729fba38a231 Mon Sep 17 00:00:00 2001 From: paolo Date: Tue, 13 Feb 2018 21:23:22 +0000 Subject: /cp 2018-02-13 Paolo Carlini PR c++/84333 * call.c (build_conditional_expr_1): Use cp_save_expr instead of save_expr for the G++ extension. /testsuite 2018-02-13 Paolo Carlini PR c++/84333 * g++.dg/template/sizeof16.C: New. * g++.dg/template/sizeof17.C: Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@257638 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/cp/ChangeLog | 6 ++++++ gcc/cp/call.c | 2 +- gcc/testsuite/ChangeLog | 6 ++++++ gcc/testsuite/g++.dg/template/sizeof16.C | 7 +++++++ gcc/testsuite/g++.dg/template/sizeof17.C | 7 +++++++ 5 files changed, 27 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/g++.dg/template/sizeof16.C create mode 100644 gcc/testsuite/g++.dg/template/sizeof17.C diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 7c52edeeab6..84fb9094d90 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,9 @@ +2018-02-13 Paolo Carlini + + PR c++/84333 + * call.c (build_conditional_expr_1): Use cp_save_expr instead of + save_expr for the G++ extension. + 2018-02-13 Jason Merrill PR c++/84080 - ICE with return type deduction and specialization. diff --git a/gcc/cp/call.c b/gcc/cp/call.c index 15b723ad2b0..7176e4afa15 100644 --- a/gcc/cp/call.c +++ b/gcc/cp/call.c @@ -4805,7 +4805,7 @@ build_conditional_expr_1 (location_t loc, tree arg1, tree arg2, tree arg3, if (lvalue_p (arg1)) arg2 = arg1 = cp_stabilize_reference (arg1); else - arg2 = arg1 = save_expr (arg1); + arg2 = arg1 = cp_save_expr (arg1); } /* If something has already gone wrong, just pass that fact up the diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index e0edbe57b56..f22c21afb76 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2018-02-13 Paolo Carlini + + PR c++/84333 + * g++.dg/template/sizeof16.C: New. + * g++.dg/template/sizeof17.C: Likewise. + 2018-02-13 Janus Weil PR fortran/84313 diff --git a/gcc/testsuite/g++.dg/template/sizeof16.C b/gcc/testsuite/g++.dg/template/sizeof16.C new file mode 100644 index 00000000000..084bb2185c7 --- /dev/null +++ b/gcc/testsuite/g++.dg/template/sizeof16.C @@ -0,0 +1,7 @@ +// PR c++/84333 +// { dg-options -Wno-pedantic } + +template int foo() +{ + return sizeof(int) > 1 ? : 1; +} diff --git a/gcc/testsuite/g++.dg/template/sizeof17.C b/gcc/testsuite/g++.dg/template/sizeof17.C new file mode 100644 index 00000000000..2d5892d2c8b --- /dev/null +++ b/gcc/testsuite/g++.dg/template/sizeof17.C @@ -0,0 +1,7 @@ +// PR c++/84333 +// { dg-options -Wno-pedantic } + +template int foo() +{ + return sizeof(T) > 1 ? : 1; +} -- cgit v1.2.1 From 34dc309ec2e03d4efafb4e8164af3fc1a2d35c8c Mon Sep 17 00:00:00 2001 From: jsm28 Date: Tue, 13 Feb 2018 21:32:49 +0000 Subject: * fr.po: Update. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@257639 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/po/ChangeLog | 4 + gcc/po/fr.po | 3910 +++++++++++++++++++++--------------------------------- 2 files changed, 1528 insertions(+), 2386 deletions(-) diff --git a/gcc/po/ChangeLog b/gcc/po/ChangeLog index ff511600b57..3d0e52be215 100644 --- a/gcc/po/ChangeLog +++ b/gcc/po/ChangeLog @@ -1,3 +1,7 @@ +2018-02-13 Joseph Myers + + * fr.po: Update. + 2018-02-12 Joseph Myers * sv.po: Update. diff --git a/gcc/po/fr.po b/gcc/po/fr.po index a07a329177f..42521d5a813 100644 --- a/gcc/po/fr.po +++ b/gcc/po/fr.po @@ -1,12 +1,12 @@ # This file is distributed under the same license as the gcc package. # # Messages français pour GNU concernant gcc. -# Copyright © 2017 Free Software Foundation, Inc. +# Copyright © 2018 Free Software Foundation, Inc. # # Michel Robitaille , traducteur depuis/since 1996. # François-Xavier Coudert , 2008. # Stéphane Aulery , 2015, 2016. -# Frédéric Marchal , 2017. +# Frédéric Marchal , 2018. # # Vocabulaire utilisé # lvalue = l-valeur @@ -37,6 +37,8 @@ # thread # iv = Induction Variable reste tel quel car la traduction serait VI ce qui ne facilite pas # la recherche de documentation sur internet. +# cfg = Control Flow Graph (j'ai parfois noté la signification de l'acronyme dans le message +# pour ceux qui voudraient faire une recherche pour le comprendre). # # J'ai des doutes pour : # inline = enligne (pas systématiquement) @@ -130,10 +132,10 @@ # msgid "" msgstr "" -"Project-Id-Version: gcc 7.2.0\n" +"Project-Id-Version: gcc 8.1-b20180128\n" "Report-Msgid-Bugs-To: https://gcc.gnu.org/bugs/\n" "POT-Creation-Date: 2018-01-26 22:47+0000\n" -"PO-Revision-Date: 2017-08-16 09:16+0200\n" +"PO-Revision-Date: 2018-02-13 20:40+0100\n" "Last-Translator: Frédéric Marchal \n" "Language-Team: French \n" "Language: fr\n" @@ -579,12 +581,12 @@ msgid " -o Place the output into .\n" msgstr " -o Placer la sortie dans le .\n" #: gcc.c:3478 -#, fuzzy -#| msgid " -pie Create a position independent executable.\n" msgid "" " -pie Create a dynamically linked position independent\n" " executable.\n" -msgstr " -pie Créer un exécutable indépendant de la position en mémoire (PIE).\n" +msgstr "" +" -pie Créer un exécutable indépendant de la position en\n" +" mémoire (PIE) lié dynamiquement.\n" #: gcc.c:3480 msgid " -shared Create a shared library.\n" @@ -875,10 +877,9 @@ msgstr "" "%s.\n" #: gcov-tool.c:529 -#, fuzzy, c-format -#| msgid "Copyright %s 2014-2017 Free Software Foundation, Inc.\n" +#, c-format msgid "Copyright %s 2018 Free Software Foundation, Inc.\n" -msgstr "Copyright %s 2014-2017 Free Software Foundation, Inc.\n" +msgstr "Copyright %s 2018 Free Software Foundation, Inc.\n" #: gcov-tool.c:532 gcov.c:849 #, c-format @@ -951,16 +952,14 @@ msgid " -i, --intermediate-format Output .gcov file in intermediate text msgstr " -i, --intermediate-format Sortir le fichier .gcov dans un format texte intermédiaire\n" #: gcov.c:821 -#, fuzzy, c-format -#| msgid " -m, --demangled-names Output demangled function names\n" +#, c-format msgid " -j, --human-readable Output human readable numbers\n" -msgstr " -m, --demangled-names Afficher les noms de fonctions sans la décoration des noms\n" +msgstr " -j, --human-readable Afficher les nombres sous forme lisible par un humain\n" #: gcov.c:822 -#, fuzzy, c-format -#| msgid " -n, --no-output Do not create an output file\n" +#, c-format msgid " -k, --use-colors Emit colored output\n" -msgstr " -n, --no-output Ne pas créer de fichier de sortie\n" +msgstr " -k, --use-colors Produire une sortie colorée\n" #: gcov.c:823 #, c-format @@ -1012,10 +1011,9 @@ msgid " -v, --version Print version number, then exit\n" msgstr " -v, --version Afficher le numéro de version puis quitter\n" #: gcov.c:833 -#, fuzzy, c-format -#| msgid " -v, --verbose Verbose mode\n" +#, c-format msgid " -w, --verbose Print verbose informations\n" -msgstr " -v, --verbose Mode verbeux\n" +msgstr " -w, --verbose Afficher des informations verbeuses\n" #: gcov.c:834 #, c-format @@ -1204,21 +1202,19 @@ msgid "call %2d never executed\n" msgstr "appel %2d jamais exécuté\n" #: gcov.c:2693 -#, fuzzy, c-format -#| msgid "branch %2d taken %s%s\n" +#, c-format msgid "branch %2d taken %s%s" -msgstr "branchement %2d pris %s%s\n" +msgstr "branchement %2d pris %s%s" #: gcov.c:2698 -#, fuzzy, c-format -#| msgid "branch %2d never executed\n" +#, c-format msgid "branch %2d never executed" -msgstr "branchement %2d jamais exécuté\n" +msgstr "branchement %2d jamais exécuté" #: gcov.c:2701 #, c-format msgid " (BB %d)" -msgstr "" +msgstr " (BB %d)" #: gcov.c:2708 #, c-format @@ -1425,16 +1421,14 @@ msgid "The following options are language-related" msgstr "Les options suivantes concernent des langages" #: passes.c:1797 -#, fuzzy, c-format -#| msgid "deducing %qT as %qT" +#, c-format msgid "during %s pass: %s\n" -msgstr "%qT est déduit comme étant %qT" +msgstr "durant l'étape %s: %s\n" #: passes.c:1802 -#, fuzzy, c-format -#| msgid "open %s failed: %s" +#, c-format msgid "dump file: %s\n" -msgstr "l'ouverture de %s a échoué: %s" +msgstr "fichier de vidange: %s\n" #: plugin.c:923 msgid "Event" @@ -1622,7 +1616,7 @@ msgstr "déclarations non concordantes pendant l'optimisation lors de l'édition #: cif-code.def:100 msgid "variadic thunk call" -msgstr "" +msgstr "appel de fragment variadique" #: cif-code.def:104 msgid "originally indirect function call not considered for inlining" @@ -1850,12 +1844,12 @@ msgstr "Croissance maximale de la trame de pile causée par la mise en ligne (en #: params.def:218 #, no-c-format msgid "Size of the stack guard expressed as a power of two." -msgstr "" +msgstr "Taille de la protection de la pile exprimée comme une puissance de deux." #: params.def:223 #, no-c-format msgid "Interval in which to probe the stack expressed as a power of two." -msgstr "" +msgstr "Intervalle durant lequel sonder la pile, exprimé comme une puissance de deux." #: params.def:230 #, no-c-format @@ -2303,15 +2297,14 @@ msgid "The size of L2 cache." msgstr "La taille du cache L2." #: params.def:797 -#, fuzzy, no-c-format -#| msgid "The maximum number of instructions to consider to unroll in a loop on average." +#, no-c-format msgid "The maximum number of stmts in loop nest for loop interchange." -msgstr "Le nombre maximum d'instructions à envisager de déplier en moyenne dans une boucle." +msgstr "Le nombre maximum de stmts dans une boucle imbriquée pour l'échange de boucle." #: params.def:804 #, no-c-format msgid "The minimum stride ratio for loop interchange to be profitable" -msgstr "" +msgstr "Le rapport du pas minimum pour que l'échange de boucle soit profitable" #: params.def:815 #, no-c-format @@ -2386,7 +2379,7 @@ msgstr "le nombre maximum d'opérations isl, 0 pour illimité" #: params.def:907 #, no-c-format msgid "whether codegen errors should be ICEs when -fchecking." -msgstr "" +msgstr "est-ce que les erreurs codegen devraient produire des erreurs interne du compilateur (ICE) avec -fchecking." #: params.def:913 #, no-c-format @@ -2441,7 +2434,7 @@ msgstr "La taille max de la liste des emplacements pour laquelle des opérations #: params.def:985 #, no-c-format msgid "Max. count of debug markers to expand or inline." -msgstr "" +msgstr "Nombre max de marqueurs de débogage à étendre ou mettre en ligne." #: params.def:992 #, no-c-format @@ -2449,10 +2442,9 @@ msgid "The minimum UID to be used for a nondebug insn." msgstr "Le UID minimum à utiliser pour une insn qui n'est pas pour le déboguage." #: params.def:997 -#, fuzzy, no-c-format -#| msgid "Maximum allowed growth of size of new parameters ipa-sra replaces a pointer to an aggregate with." +#, no-c-format msgid "Maximum allowed growth of number and total size of new parameters that ipa-sra replaces a pointer to an aggregate with." -msgstr "La croissance maximale de la taille autorisée quand IPA-SRA remplace un pointeur vers un agrégat par de nouveaux paramètres." +msgstr "La croissance maximale autorisée du nombre et de la taille totale des nouveaux paramètres que IPA-SRA remplace par un pointeur vers un agrégat." #: params.def:1003 #, no-c-format @@ -2590,10 +2582,9 @@ msgid "Enable asan stack protection." msgstr "Autoriser ASan à protéger la pile." #: params.def:1172 -#, fuzzy, no-c-format -#| msgid "Enable asan globals protection." +#, no-c-format msgid "Enable asan allocas/VLAs protection." -msgstr "Autoriser ASan à protéger les globales." +msgstr "Autoriser la protection allocas/VLAs de ASan." #: params.def:1177 #, no-c-format @@ -2681,10 +2672,9 @@ msgid "Schedule type of omp schedule for loops parallelized by parloops (static, msgstr "Type d'ordonnancement de l'ordonnanceur OMP pour des boucles parallélisées par parloops (static, dynamic, guided, auto, runtime)." #: params.def:1268 -#, fuzzy, no-c-format -#| msgid "The maximum number of instructions to consider to unroll in a loop." +#, no-c-format msgid "Minimum number of iterations per thread of an innermost parallelized loop." -msgstr "Le nombre maximum d'instructions à envisager de déplier dans une boucle." +msgstr "Le nombre minimum d'itérations par thread d'une boucle parallélisée la plus à l'intérieur." #: params.def:1274 #, no-c-format @@ -2729,18 +2719,17 @@ msgstr "Activer la vectorisation de l'épilogue d'une boucle en utilisant une ta #: params.def:1321 #, no-c-format msgid "Minimum percentage of memrefs that must go away for unroll-and-jam to be considered profitable." -msgstr "" +msgstr "Pourcentage minimum de memrefs qui doit être éliminé pour que le unroll-and-jam soit estimé profitable." #: params.def:1326 #, no-c-format msgid "Maximum unroll factor for the unroll-and-jam transformation." -msgstr "" +msgstr "Facteur de déroulement maximum pour le unroll-and-jam" #: params.def:1331 -#, fuzzy, no-c-format -#| msgid "Maximum number of strings for which strlen optimization pass will track string lengths." +#, no-c-format msgid "Maximum number of bits for which we avoid creating FMAs." -msgstr "Le nombre maximum de chaînes pour lesquelles l'optimisation de strlen conserve la longueur des chaînes." +msgstr "Le nombre maximum de bits pour lesquels on évite de créer des FMA." #: c-family/c-format.c:382 msgid "format" @@ -3016,10 +3005,9 @@ msgid "" msgstr "" #: config/aarch64/aarch64.c:6482 -#, fuzzy, c-format -#| msgid "Unsupported operand for code '%c'" +#, c-format msgid "unsupported operand for code '%c'" -msgstr "Opérande non supporté pour le code « %c »" +msgstr "opérande non supporté pour le code « %c »" #: config/aarch64/aarch64.c:6493 config/aarch64/aarch64.c:6509 #: config/aarch64/aarch64.c:6521 config/aarch64/aarch64.c:6532 @@ -3033,10 +3021,9 @@ msgstr "opérande invalide pour « %%%c »" #: config/aarch64/aarch64.c:6578 config/aarch64/aarch64.c:6589 #: config/aarch64/aarch64.c:6740 config/aarch64/aarch64.c:6751 -#, fuzzy, c-format -#| msgid "invalid constant" +#, c-format msgid "invalid vector constant" -msgstr "constante invalide" +msgstr "constante vecteur invalide" #: config/aarch64/aarch64.c:6601 config/aarch64/aarch64.c:6613 #: config/aarch64/aarch64.c:6624 @@ -3170,10 +3157,9 @@ msgid "invalid operand to %%z code" msgstr "opérande invalide pour le code %%z" #: config/arc/arc.c:3870 -#, fuzzy, c-format -#| msgid "invalid operand to %%Z code" +#, c-format msgid "invalid operands to %%c code" -msgstr "opérande invalide pour le code %%Z" +msgstr "opérandes invalides pour le code %%c" #: config/arc/arc.c:3878 #, c-format @@ -3610,10 +3596,9 @@ msgid "invalid UNSPEC as operand" msgstr "UNSPEC invalide comme opérande" #: config/i386/i386.c:17748 -#, fuzzy, c-format -#| msgid "invalid use of %" +#, c-format msgid "invalid use of register '%s'" -msgstr "usage de % invalide" +msgstr "utilisation invalide du registre « %s »" #: config/i386/i386.c:17753 #, c-format @@ -4604,34 +4589,24 @@ msgid "jump to case label" msgstr "saut à l'étiquette du « case »" #: cp/decl.c:3159 -#, fuzzy -#| msgid " enters try block" msgid "enters try block" -msgstr " entre dans le bloc « try »" +msgstr "entre dans le bloc « try »" #: cp/decl.c:3165 -#, fuzzy -#| msgid " enters catch block" msgid "enters catch block" -msgstr " entre dans le bloc « catch »" +msgstr "entre dans le bloc « catch »" #: cp/decl.c:3171 -#, fuzzy -#| msgid " enters OpenMP structured block" msgid "enters OpenMP structured block" -msgstr " entre dans le bloc structuré OpenMP" +msgstr "entre dans le bloc structuré OpenMP" #: cp/decl.c:3177 -#, fuzzy -#| msgid " enters synchronized or atomic statement" msgid "enters synchronized or atomic statement" -msgstr " entre dans l'instruction synchronisée ou atomique" +msgstr "entre dans l'instruction synchronisée ou atomique" #: cp/decl.c:3184 -#, fuzzy -#| msgid " enters constexpr if statement" msgid "enters constexpr if statement" -msgstr " entre dans l'instruction « if » « constexpr »" +msgstr "entre dans l'instruction « if » « constexpr »" #: cp/error.c:365 msgid "" @@ -4679,10 +4654,8 @@ msgid "(static destructors for %s)" msgstr "(destructeurs statiques pour %s)" #: cp/error.c:1040 -#, fuzzy -#| msgid "structure field" msgid "" -msgstr "champ de structure" +msgstr "" #: cp/error.c:1143 msgid "vtable for " @@ -4835,16 +4808,12 @@ msgid "%r%s:%d:%R [ skipping %d instantiation contexts, use -ftemplate-backtra msgstr "%r%s:%d:%R [ passe outre %d contextes d'instanciation, utilisez -ftemplate-backtrace-limit=0 pour désactiver ]\n" #: cp/error.c:3624 -#, fuzzy -#| msgid "%r%s:%d:%d:%R in constexpr expansion of %qs" msgid "%r%s:%d:%d:%R in % expansion of %qs" -msgstr "%r%s:%d:%d:%R dans l'expansion de constexpr de %qs" +msgstr "%r%s:%d:%d:%R dans l'expansion % de %qs" #: cp/error.c:3628 -#, fuzzy -#| msgid "%r%s:%d:%R in constexpr expansion of %qs" msgid "%r%s:%d:%R in % expansion of %qs" -msgstr "%r%s:%d:%R dans l'expansion de constexpr de %qs" +msgstr "%r%s:%d:%R dans l'expansion % de %qs" #: cp/pt.c:1941 cp/semantics.c:5234 msgid "candidates are:" @@ -4989,20 +4958,16 @@ msgid "arguments '%s' and '%s' for intrinsic '%s'" msgstr "arguments « %s » et « %s » pour l'intrinsèque « %s »" #: fortran/error.c:868 -#, fuzzy -#| msgid "Fortran 2008 obsolescent feature:" msgid "Fortran 2018 deleted feature:" -msgstr "Fonctionnalité Fortran 2008 obsolète :" +msgstr "Fonctionnalité Fortran 2018 supprimée :" #: fortran/error.c:871 -#, fuzzy -#| msgid "Fortran 2008 obsolescent feature:" msgid "Fortran 2018 obsolescent feature:" -msgstr "Fonctionnalité Fortran 2008 obsolète :" +msgstr "Fonctionnalité Fortran 2018 obsolète :" #: fortran/error.c:874 msgid "Fortran 2018:" -msgstr "" +msgstr "Fortran 2018 :" #: fortran/error.c:880 msgid "Fortran 2008 obsolescent feature:" @@ -5347,10 +5312,9 @@ msgid "Operands of comparison operator %%<%s%%> at %%L are %s/%s" msgstr "Les opérandes de l'opérateur de comparaison %%<%s%%> à %%L sont %s/%s" #: fortran/resolve.c:4031 -#, fuzzy, c-format -#| msgid "Unknown operator %%<%s%%> at %%L" +#, c-format msgid "Unknown operator %%<%s%%> at %%L; did you mean '%s'?" -msgstr "Opérateur %%<%s%%> inconnu à %%L" +msgstr "Opérateur %%<%s%%> inconnu à %%L; vouliez-vous utiliser « %s » ?" #: fortran/resolve.c:4034 #, c-format @@ -5428,7 +5392,7 @@ msgstr "Débordement d'entier en calculant la quantité de mémoire à allouer" #: fortran/trans-array.c:9258 #, c-format msgid "The value of the PDT LEN parameter '%s' does not agree with that in the dummy declaration" -msgstr "" +msgstr "La valeur du paramètre PDT LEN « %s » n'est pas en accord avec celle dans la déclaration fictive" #: fortran/trans-decl.c:5856 #, c-format @@ -5872,14 +5836,12 @@ msgid "Warn about most implicit conversions." msgstr "Avertir à propos d'une grande partie des conversions implicites." #: fortran/lang.opt:242 -#, fuzzy -#| msgid "Warn about possibly missing parentheses." msgid "Warn about possibly incorrect subscripts in do loops." -msgstr "Avertir à propos de parenthèses qui pourraient être manquantes." +msgstr "Avertir à propos d'indices probablement incorrects dans les boucles « do »." #: fortran/lang.opt:250 msgid "Warn if loops have been interchanged." -msgstr "" +msgstr "Avertir si les boucles ont été échangées." #: fortran/lang.opt:254 msgid "Warn about function call elimination." @@ -6007,10 +5969,8 @@ msgid "Use the Cray Pointer extension." msgstr "Utiliser l'extension de pointeur Cray." #: fortran/lang.opt:429 -#, fuzzy -#| msgid "Warn about unprototyped function declarations." msgid "Generate C prototypes from BIND(C) declarations." -msgstr "Avertir à propos des déclarations de fonctions sans prototype." +msgstr "Générer des prototypes C pour les déclarations BIND(C)." #: fortran/lang.opt:433 msgid "Ignore 'D' in column one in fixed form." @@ -6053,16 +6013,12 @@ msgid "Set the default real kind to an 8 byte wide type." msgstr "Fixer le type de réel par défaut à un type avec 8 octets de large." #: fortran/lang.opt:473 -#, fuzzy -#| msgid "Set the default real kind to an 8 byte wide type." msgid "Set the default real kind to an 10 byte wide type." -msgstr "Fixer le type de réel par défaut à un type avec 8 octets de large." +msgstr "Fixer le type de réel par défaut à un type avec 10 octets de large." #: fortran/lang.opt:477 -#, fuzzy -#| msgid "Set the default real kind to an 8 byte wide type." msgid "Set the default real kind to an 16 byte wide type." -msgstr "Fixer le type de réel par défaut à un type avec 8 octets de large." +msgstr "Fixer le type de réel par défaut à un type avec 16 octets de large." #: fortran/lang.opt:481 msgid "Allow dollar signs in entity names." @@ -6141,7 +6097,7 @@ msgstr "-ffree-line-length-\tUtiliser une longueur de ligne n en mode libre." #: fortran/lang.opt:557 msgid "Try to interchange loops if profitable." -msgstr "" +msgstr "Essayer d'interchanger les boucles si c'est profitable." #: fortran/lang.opt:561 msgid "Enable front end optimization." @@ -6316,10 +6272,8 @@ msgid "Conform to the ISO Fortran 2008 standard including TS 29113." msgstr "Être conforme au standard Fortran ISO 2008 y compris TS 29113." #: fortran/lang.opt:807 -#, fuzzy -#| msgid "Conform to the ISO Fortran 2008 standard." msgid "Conform to the ISO Fortran 2018 standard." -msgstr "Être conforme au standard Fortran ISO 2008." +msgstr "Être conforme au standard Fortran ISO 2018." #: fortran/lang.opt:811 msgid "Conform to the ISO Fortran 95 standard." @@ -6537,26 +6491,20 @@ msgid "Warn about C++ constructs whose meaning differs between ISO C++ 2011 and msgstr "Avertir à propos de constructions C++ dont la signification diffère entre le C++ ISO 2011 et le C++ ISO 2014." #: c-family/c.opt:385 -#, fuzzy -#| msgid "Warn about C++ constructs whose meaning differs between ISO C++ 2011 and ISO C++ 2014." msgid "Warn about C++ constructs whose meaning differs between ISO C++ 2014 and ISO C++ 2017." -msgstr "Avertir à propos de constructions C++ dont la signification diffère entre le C++ ISO 2011 et le C++ ISO 2014." +msgstr "Avertir à propos de constructions C++ dont la signification diffère entre le C++ ISO 2014 et le C++ ISO 2017." #: c-family/c.opt:389 -#, fuzzy -#| msgid "Warn about casting functions to incompatible types." msgid "Warn about casts between incompatible function types." -msgstr "Avertir quand des fonctions sont transtypées vers des types incompatibles." +msgstr "Avertir à propos de transtypages entre types de fonctions incompatibles." #: c-family/c.opt:393 msgid "Warn about casts which discard qualifiers." msgstr "Avertir à propos des transtypages qui écartent les qualificatifs." #: c-family/c.opt:397 c-family/c.opt:401 -#, fuzzy -#| msgid "Warn about comparison of different enum types." msgid "Warn about catch handlers of non-reference type." -msgstr "Avertir à propos de comparaisons entre enum de types différents." +msgstr "Avertir à propos de gestionnaires « catch » de types non référencés." #: c-family/c.opt:405 msgid "Warn about subscripts whose type is \"char\"." @@ -6663,10 +6611,8 @@ msgid "This switch is deprecated; use -Werror=implicit-function-declaration inst msgstr "Cette option est obsolète ; utilisez -Werror=implicit-function-declaration à la place." #: c-family/c.opt:521 -#, fuzzy -#| msgid "Warn about implicit function declarations." msgid "Warn about semicolon after in-class function definition." -msgstr "Avertir à propos des déclarations de fonctions implicites." +msgstr "Avertir à propos d'un point-virgule après la définition d'une fonction dans une classe." #: c-family/c.opt:525 msgid "Warn for implicit type conversions that cause loss of floating point precision." @@ -6725,10 +6671,8 @@ msgid "Warn about calls to snprintf and similar functions that truncate output." msgstr "Avertir à propos d'appels à snprintf et aux fonctions similaires qui tronquent la sortie." #: c-family/c.opt:588 -#, fuzzy -#| msgid "Warn when a Cell microcoded instruction is emitted." msgid "Warn when the field in a struct is not aligned." -msgstr "Avertir lorsqu'une instruction microcodée du Cell est émise." +msgstr "Avertir lorsqu'un champ dans une structure n'est pas aligné." #: c-family/c.opt:592 msgid "Warn whenever type qualifiers are ignored." @@ -6840,7 +6784,7 @@ msgstr "Avertir à propos des champs manquants dans les initialisations des stru #: c-family/c.opt:711 msgid "Warn about unsafe macros expanding to multiple statements used as a body of a clause such as if, else, while, switch, or for." -msgstr "" +msgstr "Avertir à propos des macros non sûres qui s'étendent en plusieurs instructions utilisées comme contenu d'une instruction telle que if, else, while, switch ou for." #: c-family/c.opt:715 msgid "Warn on direct multiple inheritance." @@ -6852,7 +6796,7 @@ msgstr "Avertir à propos des définitions d'espaces de noms." #: c-family/c.opt:723 msgid "Warn when fields in a struct with the packed attribute are misaligned." -msgstr "" +msgstr "Avertir quand des champs dans une structure avec des attributs empaquetés sont mal alignés." #: c-family/c.opt:727 msgid "Warn about missing sized deallocation functions." @@ -6860,7 +6804,7 @@ msgstr "Avertir quand des fonctions de désallocation basées sur la taille sont #: c-family/c.opt:731 msgid "Warn about suspicious divisions of two sizeof expressions that don't work correctly with pointers." -msgstr "" +msgstr "Avertir à propos de divisions douteuses de deux expressions sizeof qui ne fonctionnent pas correctement avec des pointeurs." #: c-family/c.opt:735 msgid "Warn about suspicious length parameters to certain string functions if the argument uses sizeof." @@ -6879,10 +6823,8 @@ msgid "Under the control of Object Size type, warn about buffer overflow in stri msgstr "Sous le contrôle du type de taille d'objet (c.f. Object Size Checking), avertir à propos des débordements de tampon dans les fonctions de manipulation de chaînes telles que memcpy et strcpy." #: c-family/c.opt:753 -#, fuzzy -#| msgid "Warn about buffer overflow in string manipulation functions like memcpy and strcpy." msgid "Warn about truncation in string manipulation functions like strncat and strncpy." -msgstr "Avertir à propos des débordements de tampon dans les fonctions de manipulation de chaînes telles que memcpy et strcpy." +msgstr "Avertir à propos des chaînes tronquées dans les fonctions de manipulation de chaînes telles que strncat et strncpy." #: c-family/c.opt:757 msgid "Warn about functions which might be candidates for format attributes." @@ -6953,10 +6895,8 @@ msgid "Warn when a noexcept expression evaluates to false even though the expres msgstr "Avertir quand une expression « noexcept » est évaluée à faux alors que l'expression ne peut pas générer d'exception en réalité." #: c-family/c.opt:821 -#, fuzzy -#| msgid "Warn if C++1z noexcept function type will change the mangled name of a symbol." msgid "Warn if C++17 noexcept function type will change the mangled name of a symbol." -msgstr "Avertir si le type de fonction noexcept du C++1z changera le nom décoré d'un symbole." +msgstr "Avertir si le type de fonction noexcept du C++17 changera le nom décoré d'un symbole." #: c-family/c.opt:825 msgid "Warn when non-templatized friend functions are declared within a template." @@ -6964,7 +6904,7 @@ msgstr "Avertir lorsque des fonctions amies sans patron sont déclarées à l'in #: c-family/c.opt:829 msgid "Warn for unsafe raw memory writes to objects of class types." -msgstr "" +msgstr "Avertir à propos d'écritures non sûres en mémoire brut vers des objets de types classe." #: c-family/c.opt:833 msgid "Warn about non-virtual destructors." @@ -7364,10 +7304,8 @@ msgid "Transform instrumented builtin calls into calls to wrappers." msgstr "Transformer les appels aux fonctions intégrées ayant été complétées par du code de contrôle en appels à des wrappers." #: c-family/c.opt:1339 -#, fuzzy -#| msgid "Deprecated. This switch has no effect." msgid "Deprecated in GCC 8. This switch has no effect." -msgstr "Obsolète. Cette option n'a aucun effet." +msgstr "Obsolète dans GCC 8. Cette option n'a aucun effet." #: c-family/c.opt:1343 msgid "Enable support for C++ concepts." @@ -7408,7 +7346,7 @@ msgstr "Factoriser les constructeurs et destructeurs complexes pour favoriser l' #: c-family/c.opt:1383 msgid "Print hierarchical comparisons when template types are mismatched." -msgstr "" +msgstr "Afficher des comparaisons hiérarchiques quand des types de patrons ne concordent pas." #: c-family/c.opt:1387 msgid "Preprocess directives only." @@ -7420,7 +7358,7 @@ msgstr "Autoriser « $ » comme caractère dans les identificateurs." #: c-family/c.opt:1395 msgid "-fmacro-prefix-map== Map one directory name to another in __FILE__, __BASE_FILE__, and __builtin_FILE()." -msgstr "" +msgstr "-fmacro-prefix-map== Remplacer un nom de répertoire par un autre dans __FILE__, __BASE_FILE__ et __builtin_FILE()." #: c-family/c.opt:1399 msgid "Write all declarations as Ada code transitively." @@ -7432,7 +7370,7 @@ msgstr "Écrire toutes les déclarations sous forme de code Ada pour le fichier #: c-family/c.opt:1410 msgid "-fno-elide-type Do not elide common elements in template comparisons." -msgstr "" +msgstr "-fno-elide-type Ne pas éliminer les éléments en communs dans les comparaisons de patrons." #: c-family/c.opt:1414 msgid "Generate code to check exception specifications." @@ -7829,22 +7767,16 @@ msgid "Conform to the ISO 2014 C++ standard." msgstr "Être conforme au standard C++ ISO 2014." #: c-family/c.opt:1941 -#, fuzzy -#| msgid "Deprecated in favor of -std=c++11." msgid "Deprecated in favor of -std=c++17." -msgstr "Rendu obsolète en faveur de -std=c++11." +msgstr "Rendu obsolète en faveur de -std=c++17." #: c-family/c.opt:1945 -#, fuzzy -#| msgid "Conform to the ISO 2011 C++ standard." msgid "Conform to the ISO 2017 C++ standard." -msgstr "Être conforme au standard C++ ISO 2011." +msgstr "Être conforme au standard C++ ISO 2017." #: c-family/c.opt:1949 -#, fuzzy -#| msgid "Conform to the ISO 2017(?) C++ draft standard (experimental and incomplete support)." msgid "Conform to the ISO 2020(?) C++ draft standard (experimental and incomplete support)." -msgstr "Être conforme au brouillon du standard C++ ISO 2017(?) (support expérimental et incomplet)." +msgstr "Être conforme au brouillon du standard C++ ISO 2020(?) (support expérimental et incomplet)." #: c-family/c.opt:1953 c-family/c.opt:2071 msgid "Conform to the ISO 2011 C standard." @@ -7856,10 +7788,8 @@ msgstr "Rendu obsolète en faveur de -std=c11." #: c-family/c.opt:1961 c-family/c.opt:1965 c-family/c.opt:2075 #: c-family/c.opt:2079 -#, fuzzy -#| msgid "Conform to the ISO 1990 C standard as amended in 1994." msgid "Conform to the ISO 2017 C standard (expected to be published in 2018)." -msgstr "Être conforme au standard C ISO 1990 tel que amendé en 1994." +msgstr "Être conforme au standard C ISO 2017 (publication prévue en 2018)." #: c-family/c.opt:1969 c-family/c.opt:1973 c-family/c.opt:2055 msgid "Conform to the ISO 1990 C standard." @@ -7894,22 +7824,16 @@ msgid "Conform to the ISO 2014 C++ standard with GNU extensions." msgstr "Être conforme au standard C++ ISO 2014 avec les extensions GNU." #: c-family/c.opt:2011 -#, fuzzy -#| msgid "Deprecated in favor of -std=gnu++11." msgid "Deprecated in favor of -std=gnu++17." -msgstr "Rendu obsolète en faveur de -std=gnu++11." +msgstr "Rendu obsolète en faveur de -std=gnu++17." #: c-family/c.opt:2015 -#, fuzzy -#| msgid "Conform to the ISO 2011 C++ standard with GNU extensions." msgid "Conform to the ISO 2017 C++ standard with GNU extensions." -msgstr "Être conforme au standard C++ ISO 2011 avec les extensions GNU." +msgstr "Être conforme au standard C++ ISO 2017 avec les extensions GNU." #: c-family/c.opt:2019 -#, fuzzy -#| msgid "Conform to the ISO 201z(7?) C++ draft standard with GNU extensions (experimental and incomplete support)." msgid "Conform to the ISO 2020(?) C++ draft standard with GNU extensions (experimental and incomplete support)." -msgstr "Être conforme au brouillon du standard C++ ISO 201z(7?) avec les extensions GNU (support expérimental et incomplet)." +msgstr "Être conforme au brouillon du standard C++ ISO 2020(?) avec les extensions GNU (support expérimental et incomplet)." #: c-family/c.opt:2023 msgid "Conform to the ISO 2011 C standard with GNU extensions." @@ -7920,10 +7844,8 @@ msgid "Deprecated in favor of -std=gnu11." msgstr "Rendu obsolète en faveur de -std=gnu11." #: c-family/c.opt:2031 c-family/c.opt:2035 -#, fuzzy -#| msgid "Conform to the ISO 2011 C standard with GNU extensions." msgid "Conform to the ISO 2017 C standard (expected to be published in 2018) with GNU extensions." -msgstr "Être conforme au standard C ISO 2011 avec les extensions GNU." +msgstr "Être conforme au standard C ISO 2017 (publication prévue en 2018) avec les extensions GNU." #: c-family/c.opt:2039 c-family/c.opt:2043 msgid "Conform to the ISO 1990 C standard with GNU extensions." @@ -8031,7 +7953,7 @@ msgstr "Produire les informations de débogage relatives à l'étape d'analyse d #: go/lang.opt:86 msgid "-fgo-debug-escape-hash=\tHash value to debug escape analysis." -msgstr "" +msgstr "-fgo-debug-escape-hash=\tValeur de hachage pour l'analyse d'échappement de débogage." #: config/vms/vms.opt:27 msgid "Malloc data into P2 space." @@ -8524,10 +8446,8 @@ msgid "Specify the code model." msgstr "Spécifier le modèle de code." #: config/riscv/riscv.opt:93 -#, fuzzy -#| msgid "Do not use unaligned memory references." msgid "Do not generate unaligned memory accesses." -msgstr "Ne pas utiliser des références mémoire non alignées." +msgstr "Ne pas générer des accès mémoire non alignées." #: config/riscv/riscv.opt:97 config/i386/i386.opt:287 #: config/powerpcspe/aix64.opt:36 config/powerpcspe/linux64.opt:32 @@ -8711,14 +8631,12 @@ msgid "Enable the division approximation. Enabling this reduces precision of di msgstr "Activer l'approximation de la division. Activer cette option réduit la précision des résultats de la division à 16 bits en simple précision et 32 bits en double précision." #: config/aarch64/aarch64.opt:190 -#, fuzzy -#| msgid "The possible TLS dialects:" msgid "The possible SVE vector lengths:" -msgstr "Les dialectes TLS possibles:" +msgstr "Les longueurs de vecteurs SVE possibles:" #: config/aarch64/aarch64.opt:212 msgid "-msve-vector-bits=N\tSet the number of bits in an SVE vector register to N." -msgstr "" +msgstr "-msve-vector-bits=N\tFixe le nombre de bits dans le registre vectoriel SVE à N." #: config/aarch64/aarch64.opt:216 msgid "Enables verbose cost model dumping in the debug dump files." @@ -9070,17 +8988,15 @@ msgstr "Éviter l'utilisation des instructions DIV et MOD" #: config/ft32/ft32.opt:35 msgid "target the FT32B architecture" -msgstr "" +msgstr "cibler l'architecture FT32B" #: config/ft32/ft32.opt:39 -#, fuzzy -#| msgid "Enable code hoisting." msgid "enable FT32B code compression" -msgstr "Activer la sortie du code hors des boucles." +msgstr "activer la compression de code FT32B" #: config/ft32/ft32.opt:43 msgid "Avoid placing any readable data in program memory" -msgstr "" +msgstr "Évite de placer des données lisibles dans la mémoire du programme" #: config/h8300/h8300.opt:23 msgid "Generate H8S code." @@ -9343,10 +9259,8 @@ msgid "Known assembler dialects (for use with the -masm= option):" msgstr "Dialectes d'assembleurs connus (à utiliser avec l'option -masm=):" #: config/i386/i386.opt:275 -#, fuzzy -#| msgid "Branches are this expensive (1-5, arbitrary units)." msgid "Branches are this expensive (arbitrary units)." -msgstr "Les branchements sont coûteux à ce point (1-5, unités arbitraires)." +msgstr "Les branchements sont coûteux à ce point (unités arbitraires)." #: config/i386/i386.opt:279 msgid "-mlarge-data-threshold=\tData greater than given threshold will go into .ldata section in x86-64 medium model." @@ -9503,7 +9417,7 @@ msgstr "ABI connues (à utiliser avec l'option -mabi=):" #: config/i386/i386.opt:547 msgid "Use libgcc stubs to save and restore registers clobbered by 64-bit Microsoft to System V ABI calls." -msgstr "" +msgstr "Utiliser des stubs de libgcc pour sauvegarder et rétablir les registres écrasés par les appels 64 bits de Microsoft vers l'ABI System V" #: config/i386/i386.opt:551 config/powerpcspe/powerpcspe.opt:189 #: config/rs6000/rs6000.opt:208 @@ -9547,16 +9461,12 @@ msgid "Use 128-bit AVX instructions instead of 256-bit AVX instructions in the a msgstr "Utiliser les instructions AVX 128 bits au lieu des instructions AVX 256 bits dans le vectoriseur automatique." #: config/i386/i386.opt:600 -#, fuzzy -#| msgid "Use 128-bit AVX instructions instead of 256-bit AVX instructions in the auto-vectorizer." msgid "Use given register vector width instructions instead of maximum register width in the auto-vectorizer." -msgstr "Utiliser les instructions AVX 128 bits au lieu des instructions AVX 256 bits dans le vectoriseur automatique." +msgstr "Utiliser les instructions de largeur de registre vectoriel donné au lieu de la largeur de registre maximale dans le vectoriseur automatique." #: config/i386/i386.opt:604 -#, fuzzy -#| msgid "Known stack protector guard (for use with the -mstack-protector-guard= option):" msgid "Known preferred register vector length (to use with the -mprefer-vector-width= option)" -msgstr "Méthodes connues pour protéger la pile (à utiliser avec l'option -mstack-protector-guard=):" +msgstr "Longueur de registre vectoriel préférée connue (à utiliser avec l'option -mprefer-vector-width=):" #: config/i386/i386.opt:622 msgid "Generate 32bit i386 code." @@ -9675,22 +9585,16 @@ msgid "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F a msgstr "Supporter les fonctions internes MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F et AVX512VPOPCNTDQ et la génération de code." #: config/i386/i386.opt:742 -#, fuzzy -#| msgid "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F and AVX512VBMI built-in functions and code generation." msgid "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F and AVX512VBMI2 built-in functions and code generation." -msgstr "Supporter les fonctions internes MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F et AVX512VBMI et la génération de code." +msgstr "Supporter les fonctions internes MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F et AVX512VBMI2 et la génération de code." #: config/i386/i386.opt:746 -#, fuzzy -#| msgid "Support BMI built-in functions and code generation." msgid "Support AVX512VNNI built-in functions and code generation." -msgstr "Supporter les fonctions internes BMI et la génération de code." +msgstr "Supporter les fonctions internes AVX512VNNI et la génération de code." #: config/i386/i386.opt:750 -#, fuzzy -#| msgid "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F and AVX5124FMAPS built-in functions and code generation." msgid "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F and AVX512BITALG built-in functions and code generation." -msgstr "Supporter les fonctions internes MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F et AVX5124FMAPS et la génération de code." +msgstr "Supporter les fonctions internes MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F et AVX512BITALG et la génération de code." #: config/i386/i386.opt:754 msgid "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX and FMA built-in functions and code generation." @@ -9729,22 +9633,16 @@ msgid "Support RDPID built-in functions and code generation." msgstr "Supporter les fonctions internes RDPID et la génération de code." #: config/i386/i386.opt:790 -#, fuzzy -#| msgid "Support BMI built-in functions and code generation." msgid "Support GFNI built-in functions and code generation." -msgstr "Supporter les fonctions internes BMI et la génération de code." +msgstr "Supporter les fonctions internes GFNI et la génération de code." #: config/i386/i386.opt:794 -#, fuzzy -#| msgid "Support AES built-in functions and code generation." msgid "Support VAES built-in functions and code generation." -msgstr "Supporter les fonctions internes AES et la génération de code." +msgstr "Supporter les fonctions internes VAES et la génération de code." #: config/i386/i386.opt:798 -#, fuzzy -#| msgid "Support PCLMUL built-in functions and code generation." msgid "Support VPCLMULQDQ built-in functions and code generation." -msgstr "Supporter les fonctions internes PCLMUL et la génération de code." +msgstr "Supporter les fonctions internes VPCLMULQDQ et la génération de code." #: config/i386/i386.opt:802 msgid "Support BMI built-in functions and code generation." @@ -9926,58 +9824,48 @@ msgid "Use the given offset for addressing the stack-protector guard." msgstr "Utiliser le décalage donné pour adresser la protection de la pile." #: config/i386/i386.opt:991 -#, fuzzy -#| msgid "Use the given offset for addressing the stack-protector guard." msgid "Use the given symbol for addressing the stack-protector guard." -msgstr "Utiliser le décalage donné pour adresser la protection de la pile." +msgstr "Utiliser le symbole donné pour adresser la protection de la pile." #: config/i386/i386.opt:995 msgid "Attempt to avoid generating instruction sequences containing ret bytes." msgstr "Essayer d'éviter de générer des séquences d'instructions contenant des octets « ret »." #: config/i386/i386.opt:1003 -#, fuzzy -#| msgid "Support MMX and SSE built-in functions and code generation." msgid "Support Control-flow Enforcment Technology (CET) built-in functions and code generation." -msgstr "Supporter les fonctions internes MMX et SSE et la génération de code." +msgstr "Supporter les fonctions internes CET (Control-flow Enforcment Technology) et la génération de code." #: config/i386/i386.opt:1008 msgid "Specifically enables an indirect branch tracking feature from Control-flow Enforcment Technology (CET)." -msgstr "" +msgstr "Activer spécifiquement une fonctionnalité de suivi d'un branchement indirect de CET (Control-flow Enforcment Technology)." #: config/i386/i386.opt:1013 msgid "Specifically enables an shadow stack support feature from Control-flow Enforcment Technology (CET)." -msgstr "" +msgstr "Activer spécifiquement une fonctionnalité supportant la pile masquée de CET (Control-flow Enforcment Technology)." #: config/i386/i386.opt:1018 msgid "Turn on CET instrumentation for switch statements, which use jump table and indirect jump." -msgstr "" +msgstr "Activer l'instrumentalisation CET pour les instructions switch, elle utilise une table de sauts et des sauts indirects." #: config/i386/i386.opt:1023 -#, fuzzy -#| msgid "Warn about function call elimination." msgid "Make all function calls indirect." -msgstr "Avertir à propos de l'élimination d'appels de fonctions." +msgstr "Rendre indirects tous les appels de fonctions." #: config/i386/i386.opt:1027 msgid "Convert indirect call and jump to call and return thunks." -msgstr "" +msgstr "Convertir les appel et saut indirects en fragment d'appel et de saut" #: config/i386/i386.opt:1031 -#, fuzzy -#| msgid "function return type cannot be function" msgid "Convert function return to call and return thunk." -msgstr "le type retourné par une fonction ne peut être une fonction" +msgstr "Convertir le retour de fonction en un fragment d'appel et de retour." #: config/i386/i386.opt:1035 -#, fuzzy -#| msgid "Known data alignment choices (for use with the -malign-data= option):" msgid "Known indirect branch choices (for use with the -mindirect-branch=/-mfunction-return= options):" -msgstr "Choix connus pour l'alignement de données (à utiliser avec l'option -malign-data=):" +msgstr "Choix connus pour le branchement indirect (à utiliser avec les options -mindirect-branch=/-mfunction-return=):" #: config/i386/i386.opt:1051 msgid "Force indirect call and jump via register." -msgstr "" +msgstr "Forcer les appels indirects et les sauts via un registre." #: config/pa/pa64-hpux.opt:23 msgid "Assume code will be linked by GNU ld." @@ -10866,10 +10754,8 @@ msgid "-mmcu=MCU\tSelect the target MCU." msgstr "-mmcu=MCU\tSélectionner le MCU cible." #: config/avr/avr.opt:31 -#, fuzzy -#| msgid "Use subroutines for function prologues and epilogues." msgid "Allow usage of __gcc_isr pseudo instructions in ISR prologues and epilogues." -msgstr "Utiliser des sous-routines pour les prologue et épilogue des fonctions." +msgstr "Autoriser l'utilisation des pseudo-instructions __gcc_isr dans les prologues et épilogues ISR." #: config/avr/avr.opt:35 msgid "Set the number of 64 KiB flash segments." @@ -10885,7 +10771,7 @@ msgstr "Activer le support et l'utilisation des instructions Lire-Modifier-Écri #: config/avr/avr.opt:53 msgid "Use RJMP / RCALL even though CALL / JMP are available." -msgstr "" +msgstr "Utiliser RJMP / RCALL même si CALL /JMP sont disponibles." #: config/avr/avr.opt:57 msgid "Use an 8-bit 'int' type." @@ -10901,7 +10787,7 @@ msgstr "Définir le coût du branchement dans des instructions de branchements c #: config/avr/avr.opt:69 msgid "Treat main as if it had attribute OS_task." -msgstr "" +msgstr "Traiter « main » comme si il avait l'attribut OS_task." #: config/avr/avr.opt:79 msgid "Change only the low 8 bits of the stack pointer." @@ -11250,10 +11136,8 @@ msgid "Permit scheduling of a function's prologue sequence." msgstr "Permettre l'ordonnancement de la séquence du prologue d'une fonction." #: config/arm/arm.opt:195 -#, fuzzy -#| msgid "Specify the minimum bit alignment of structures." msgid "Specify the minimum bit alignment of structures. (Deprecated)." -msgstr "Spécifier l'alignement de bits minimum des structures." +msgstr "Spécifier l'alignement de bits minimum des structures. (Déprécié)." #: config/arm/arm.opt:199 msgid "Generate code for Thumb state." @@ -11302,7 +11186,7 @@ msgstr "Utiliser les registres doubles mots (plutôt que quadruples mots) de Neo #: config/arm/arm.opt:259 msgid "Enable more verbose RTX cost dumps during debug. For GCC developers use only." -msgstr "" +msgstr "Activer des décharges de coût RTX plus verbeux durant le débogage. Uniquement pour les développeurs de GCC." #: config/arm/arm.opt:263 msgid "Only generate absolute relocations on word sized values." @@ -11338,11 +11222,11 @@ msgstr "Ne pas autoriser les données constantes à être placées dans les sect #: config/arm/arm.opt:296 msgid "When linking for big-endian targets, generate a BE8 format image." -msgstr "" +msgstr "Lors de l'édition de liens pour des cibles gros boutistes, générer une image au format BE8." #: config/arm/arm.opt:300 msgid "When linking for big-endian targets, generate a legacy BE32 format image." -msgstr "" +msgstr "Lors de l'édition de liens pour des cibles gros-boutistes, générer une image au format historique BE32." #: config/arm/arm.opt:304 config/sh/sh.opt:195 msgid "Cost to assume for a branch insn." @@ -11490,24 +11374,20 @@ msgid "Specify the memory model in effect for the program." msgstr "Spécifier le modèle mémoire actif pour le programme." #: config/rs6000/rs6000.opt:165 -#, fuzzy -#| msgid "Enable tail merging on trees." msgid "Enable early gimple folding of builtins." -msgstr "Activer la fusion des appels en fin de fonction (tail call) sur les arbres." +msgstr "Activer la fusion gimple précoce des fonctions internes." #: config/rs6000/rs6000.opt:188 -#, fuzzy -#| msgid "%qs is deprecated" msgid "%<-mstring%> is deprecated" -msgstr "%qs est obsolète" +msgstr "%<-mstring%> est obsolète" #: config/rs6000/rs6000.opt:338 msgid "Specify the maximum number of bytes to compare inline with non-looping code. If this is set to 0, all inline expansion (non-loop and loop) of memcmp is disabled." -msgstr "" +msgstr "Spécifier le nombre maximum d'octets à comparer en ligne avec le code qui ne participe pas à la boucle. Si cette valeur vaut 0, toutes les expansions en ligne (non boucle et boucle) de memcmp sont désactivées." #: config/rs6000/rs6000.opt:342 msgid "Specify the maximum number of bytes to compare inline with loop code generation. If the length is not known at compile time, memcmp will be called after this many bytes are compared. By default, a length will be picked depending on the tuning target." -msgstr "" +msgstr "Spécifier le nombre maximum d'octets à comparer en ligne avec la génération de code de boucle. Si la longueur n'est pas connue au moment de la compilation, memcmp sera appelé après que ce nombre d'octets ait été comparé. Par défaut, la longueur est choisie sur base des paramètres de réglages." #: config/alpha/alpha.opt:27 msgid "Use fp registers." @@ -12182,11 +12062,11 @@ msgstr "Activer la génération des instructions CDX du R2." #: config/nios2/nios2.opt:592 msgid "Regular expression matching additional GP-addressible section names." -msgstr "" +msgstr "Expression régulière correspondant à des noms de sections adressables par GP supplémentaires" #: config/nios2/nios2.opt:596 msgid "Regular expression matching section names for r0-relative addressing." -msgstr "" +msgstr "Expression régulière correspondant à des noms de sections pour l'adressage relatif à r0." #: config/rx/rx.opt:29 msgid "Store doubles in 64 bits." @@ -12628,16 +12508,12 @@ msgid "Generate performance extension instructions." msgstr "Générer des instructions de l'extension de performance." #: config/nds32/nds32.opt:66 -#, fuzzy -#| msgid "Generate performance extension instructions." msgid "Generate performance extension version 2 instructions." -msgstr "Générer des instructions de l'extension de performance." +msgstr "Générer des instructions de l'extension de performance version 2." #: config/nds32/nds32.opt:70 -#, fuzzy -#| msgid "Generate performance extension instructions." msgid "Generate string extension instructions." -msgstr "Générer des instructions de l'extension de performance." +msgstr "Générer des instructions de l'extension de chaînes." #: config/nds32/nds32.opt:74 msgid "Generate v3 push25/pop25 instructions." @@ -13454,7 +13330,7 @@ msgstr "Identique à -mA7." #: config/arc/arc.opt:58 msgid "Force all calls to be made via a jli instruction." -msgstr "" +msgstr "Forcer tous les appels à être faits via une instruction jli." #: config/arc/arc.opt:62 msgid "-mmpy-option=MPY Compile ARCv2 code with a multiplier design option." @@ -13572,10 +13448,8 @@ msgid "Cost to assume for a multiply instruction, with 4 being equal to a normal msgstr "Coût supposé d'une instruction de multiplication où 4 est égal à une insn normale." #: config/arc/arc.opt:254 -#, fuzzy -#| msgid "-mcpu=CPU\tCompile code for ARC variant CPU." msgid "-mcpu=TUNE Tune code for given ARC variant." -msgstr "-mcpu=CPU\tCompiler le code pour la variante du processeur ARC." +msgstr "-mcpu=TUNE Ajuste le code pour la variante ARC spécifiée." #: config/arc/arc.opt:282 msgid "Enable the use of indexed loads." @@ -13726,24 +13600,20 @@ msgid "Enable use of NPS400 xld/xst extension." msgstr "Activer l'utilisation de l'extension xld/xst du NPS400." #: config/arc/arc.opt:500 -#, fuzzy -#| msgid "Specifies the number of registers to reserve for interrupt handlers." msgid "Specifies the registers that the processor saves on an interrupt entry and exit." -msgstr "Spécifier le nombre de registres à réserver pour les gestionnaires d'interruptions." +msgstr "Spécifier les registres que le processeur sauvegarde à l'entrée et à la sortie d'une interruption." #: config/arc/arc.opt:504 -#, fuzzy -#| msgid "Specifies the number of registers to reserve for interrupt handlers." msgid "Specifies the number of registers replicated in second register bank on entry to fast interrupt." -msgstr "Spécifier le nombre de registres à réserver pour les gestionnaires d'interruptions." +msgstr "Spécifier le nombre de registres à répliquer dans la deuxième banque de registres à l'entrée d'une interruption rapide." #: config/arc/arc.opt:508 msgid "Sets LP_COUNT register width. Possible values are 8, 16, 20, 24, 28, and 32." -msgstr "" +msgstr "Définir la largeur du registre LP_COUNT. Les valeurs possibles sont 8, 16, 20, 24, 28 et 32." #: config/arc/arc.opt:533 msgid "Enable 16-entry register file." -msgstr "" +msgstr "Activer le fichier de registre à 16 entrées." #: lto/lang.opt:28 #, c-format @@ -13827,10 +13697,8 @@ msgid "Warn about inappropriate attribute usage." msgstr "Avertir à propos de l'utilisation inappropriée d'un attribut." #: common.opt:567 -#, fuzzy -#| msgid "Warn about type and rank mismatches between arguments and parameters." msgid "Warn about type safety and similar errors in attribute alias and related." -msgstr "Avertir à propos d'incohérences de type et de rang entre les arguments et les paramètres." +msgstr "Avertir à propos de la sécurité du type et les erreurs similaires dans les alias d'attributs et apparentés." #: common.opt:571 common.opt:575 msgid "Warn about pointer casts which increase alignment." @@ -13965,10 +13833,8 @@ msgid "Warn about optimizations that assume that signed overflow is undefined." msgstr "Avertir à propos d'optimisations qui supposent que le débordement d'un nombre signé est indéfini." #: common.opt:730 -#, fuzzy -#| msgid "Warn about functions which might be candidates for __attribute__((const))." msgid "Warn about functions which might be candidates for __attribute__((cold))." -msgstr "Avertir à propos des fonctions qui seraient candidates pour __attribute__((const))." +msgstr "Avertir à propos des fonctions qui seraient candidates pour __attribute__((cold))." #: common.opt:734 msgid "Warn about functions which might be candidates for __attribute__((const))." @@ -13983,10 +13849,8 @@ msgid "Warn about functions which might be candidates for __attribute__((noretur msgstr "Avertir à propos des fonctions qui seraient candidates pour __attribute__((noreturn))." #: common.opt:746 -#, fuzzy -#| msgid "Warn about functions which might be candidates for __attribute__((const))." msgid "Warn about functions which might be candidates for __attribute__((malloc))." -msgstr "Avertir à propos des fonctions qui seraient candidates pour __attribute__((const))." +msgstr "Avertir à propos des fonctions qui seraient candidates pour __attribute__((malloc))." #: common.opt:750 msgid "Warn about C++ polymorphic types where adding final keyword would improve code quality." @@ -14105,10 +13969,8 @@ msgid "Select what to sanitize." msgstr "Sélectionner quoi assainir." #: common.opt:1005 -#, fuzzy -#| msgid "Select what to sanitize." msgid "Select what to coverage sanitize." -msgstr "Sélectionner quoi assainir." +msgstr "Sélectionner ce que la couverture assaini." #: common.opt:1009 msgid "-fasan-shadow-offset=\tUse custom shadow memory offset." @@ -14255,16 +14117,12 @@ msgid "-fdbg-cnt=:[,:,...]\tSet the debug counte msgstr "-fdbg-cnt=:[,:,…]\tDéfinir la limite du compteur de débogage." #: common.opt:1178 -#, fuzzy -#| msgid "Map one directory name to another in debug information." msgid "-fdebug-prefix-map== Map one directory name to another in debug information." -msgstr "Remplacer un nom de répertoire par un autre dans les informations de débogage." +msgstr "-fdebug-prefix-map== Remplacer un nom de répertoire par un autre dans les informations de débogage." #: common.opt:1182 -#, fuzzy -#| msgid "Map one directory name to another in debug information." msgid "-ffile-prefix-map== Map one directory name to another in compilation result." -msgstr "Remplacer un nom de répertoire par un autre dans les informations de débogage." +msgstr "-ffile-prefix-map== Remplacer un nom de répertoire par un autre dans le résultat de la compilation." #: common.opt:1186 msgid "Output .debug_types section when using DWARF v4 debuginfo." @@ -14311,8 +14169,6 @@ msgid "-fdiagnostics-color=[never|always|auto]\tColorize diagnostics." msgstr "-fdiagnostics-color=[never|always|auto]\tAfficher les diagnostiques en couleur." #: common.opt:1265 -#, fuzzy -#| msgid "Print fixit hints in machine-readable form." msgid "Print fix-it hints in machine-readable form." msgstr "Afficher les indices pour la correction sous forme lisible par une machine." @@ -14505,16 +14361,12 @@ msgid "Enable loop nest transforms. Same as -floop-nest-optimize." msgstr "Activer les transformations de boucles imbriquées. Identique à -floop-nest-optimize." #: common.opt:1512 -#, fuzzy -#| msgid "Enable loop header copying on trees." msgid "Enable loop interchange on trees." -msgstr "Activer la copie des en-têtes de boucles sur les arbres." +msgstr "Activer l'échange de boucles sur les arbres." #: common.opt:1520 -#, fuzzy -#| msgid "Perform loop unrolling for all loops." msgid "Perform unroll-and-jam on loops." -msgstr "Dérouler toutes les boucles." +msgstr "Réaliser le unroll-and-jam." #: common.opt:1524 msgid "Enable support for GNU transactional memory." @@ -14599,13 +14451,12 @@ msgstr "Mettre en ligne les opérations __atomic quand une séquence d'instructi #: common.opt:1636 msgid "-fcf-protection=[full|branch|return|none]\tInstrument functions with checks to verify jump/call/return control-flow transfer instructions have valid targets." -msgstr "" +msgstr "-fcf-protection=[full|branch|return|none]\tInstrumentaliser les fonctions avec des contrôles pour vérifier que les instructions de contrôle de flux jump/call/return ont une cible valable." #: common.opt:1640 -#, fuzzy, c-format -#| msgid "unknown Stack Reuse Level %qs" +#, c-format msgid "unknown Cotrol-Flow Protection Level %qs" -msgstr "Niveau de réutilisation de la pile %qs inconnu" +msgstr "niveau de Control-Flow Protection %qs inconnu" #: common.opt:1656 msgid "Instrument function entry and exit with profiling calls." @@ -14727,7 +14578,7 @@ msgstr "Préfixer les symboles externes avec un caractère de soulignement." #: common.opt:1803 msgid "Do CFG-sensitive rematerialization in LRA." -msgstr "Faire une rematérialisation sensible à CFG pendant LRA." +msgstr "Faire une rematérialisation sensible au CFG pendant LRA." #: common.opt:1807 msgid "Enable link-time optimization." @@ -14931,10 +14782,8 @@ msgid "Enable basic program profiling code." msgstr "Autoriser le code de profilage de base du programme." #: common.opt:2030 -#, fuzzy -#| msgid "Generate bounds passing for calls." msgid "Generate absolute source path names for gcov." -msgstr "Générer du code pour passer les limites dans les appels." +msgstr "Générer des noms de chemins absolus vers le code source pour gcov." #: common.opt:2034 msgid "Insert arc-based program profiling code." @@ -14986,10 +14835,8 @@ msgid "Enable function reordering that improves code placement." msgstr "Activer la réorganisation des fonctions qui améliore le placement du code." #: common.opt:2091 -#, fuzzy -#| msgid "Generate cld instruction in the function prologue." msgid "Insert NOP instructions at each function entry." -msgstr "Générer l'instruction cld dans le prologue de fonctions." +msgstr "Insérer des instructions NOP à chaque entrée de fonction." #: common.opt:2098 msgid "-frandom-seed=\tMake compile reproducible using ." @@ -15222,7 +15069,7 @@ msgstr "Insérer du code de vérification de la pile dans le programme. Identiqu #: common.opt:2371 msgid "Insert code to probe each page of stack space as it is allocated to protect from stack-clash style attacks." -msgstr "" +msgstr "Insérer du code pour sonder chaque page de l'espace de la pile quand il est alloué pour protéger contre des attaques visant une collision de pile (stack-clash)." #: common.opt:2379 msgid "-fstack-limit-register=\tTrap if the stack goes past ." @@ -15257,10 +15104,8 @@ msgid "Assume strict aliasing rules apply." msgstr "Supposer que la règle selon laquelle une zone mémoire ne peut être accessible que par un seul pointeur (strict aliasing) s'applique." #: common.opt:2419 -#, fuzzy -#| msgid "Treat signed overflow as undefined." msgid "Treat signed overflow as undefined. Negated as -fwrapv -fwrapv-pointer." -msgstr "Traiter les débordements signés comme étant indéfinis." +msgstr "Traiter les débordements signés comme étant indéfinis. Inversé par -fwrapv -fwrapv-pointer." #: common.opt:2423 msgid "Implement __atomic operations via libcalls to legacy __sync functions." @@ -15596,10 +15441,8 @@ msgid "Perform whole program optimizations." msgstr "Réaliser les optimisations sur tout le programme." #: common.opt:2869 -#, fuzzy -#| msgid "Assume signed arithmetic overflow wraps around." msgid "Assume pointer overflow wraps around." -msgstr "Supposer que le débordement de l'arithmétique signée boucle sur la plage accessible." +msgstr "Supposer que le débordement de pointeur revient au départ." #: common.opt:2873 msgid "Assume signed arithmetic overflow wraps around." @@ -15614,8 +15457,7 @@ msgid "Generate debug information in default format." msgstr "Générer les informations de débogage dans le format par défaut." #: common.opt:2884 common.opt:2888 common.opt:2892 common.opt:2896 -#, fuzzy, c-format -#| msgid "switch %qs is no longer supported" +#, c-format msgid "switch %qs no longer supported" msgstr "l'option %qs n'est plus supportée" @@ -15665,7 +15507,7 @@ msgstr "Générer les informations de débogage dans le format STABS étendu." #: common.opt:2949 msgid "Emit progressive recommended breakpoint locations." -msgstr "" +msgstr "Émettre des emplacements de points d'arrêt progressifs recommandés" #: common.opt:2953 msgid "Don't emit DWARF additions beyond selected version." @@ -15736,22 +15578,16 @@ msgid "Create a shared library." msgstr "Créer une bibliothèque partagée." #: common.opt:3173 -#, fuzzy -#| msgid "Don't create a position independent executable." msgid "Don't create a dynamically linked position independent executable." -msgstr "Ne pas créer un exécutable indépendant de la position." +msgstr "Ne pas créer un exécutable indépendant de la position dynamiquement lié." #: common.opt:3177 -#, fuzzy -#| msgid "Create a position independent executable." msgid "Create a dynamically linked position independent executable." -msgstr "Créer un exécutable indépendant de la position." +msgstr "Créer un exécutable indépendant de la position dynamiquement lié." #: common.opt:3181 -#, fuzzy -#| msgid "Create a position independent executable." msgid "Create a static position independent executable." -msgstr "Créer un exécutable indépendant de la position." +msgstr "Créer un exécutable statique indépendant de la position." #: common.opt:3188 msgid "Use caller save register across calls if possible." @@ -16118,10 +15954,8 @@ msgid "cannot use type %s as type %s" msgstr "impossible d'utiliser le type %s comme type %s" #: go/gofrontend/types.cc:781 -#, fuzzy -#| msgid "conversion to incomplete type" msgid "conversion from normal type to notinheap type" -msgstr "conversion vers un type incomplet" +msgstr "conversion d'un type normal vers un type notinheap" #: go/gofrontend/types.cc:4452 msgid "different receiver types" @@ -16195,14 +16029,13 @@ msgstr "la méthode %s%s%s est marquée comme go:nointerface" #: attribs.c:421 #, gcc-internal-format msgid "ignoring attribute %qE in declaration of a built-in function %qD because it conflicts with attribute %qs" -msgstr "" +msgstr "l'attribut %qE est ignoré dans la déclaration d'une fonction interne %qD car il est en conflit avec l'attribut %qs" # %qs est remplacé par un texte non traduit: « hot », « cold », « always_inline ». #: attribs.c:427 -#, fuzzy, gcc-internal-format -#| msgid "%qE attribute ignored due to conflict with attribute %qs" +#, gcc-internal-format msgid "ignoring attribute %qE because it conflicts with attribute %qs" -msgstr "l'attribut %qE est ignoré à cause d'un conflit avec l'attribut %qs" +msgstr "l'attribut %qE est ignoré car il est en conflit avec l'attribut %qs" #: attribs.c:433 c-family/c-attribs.c:1893 cp/decl.c:13547 cp/friend.c:302 #: cp/tree.c:4471 @@ -16295,10 +16128,9 @@ msgid "%qE attribute ignored" msgstr "attribut %qE ignoré" #: attribs.c:973 -#, fuzzy, gcc-internal-format -#| msgid "missing % attribute for multi-versioned %D" +#, gcc-internal-format msgid "missing % attribute for multi-versioned %qD" -msgstr "attribut % manquant pour %D avec plusieurs versions" +msgstr "attribut % manquant pour %qD avec plusieurs versions" #: attribs.c:976 cp/decl.c:1218 cp/decl.c:1944 cp/decl.c:1954 cp/decl.c:2516 #: cp/decl.c:2935 @@ -16422,94 +16254,79 @@ msgid "invalid third argument to %<__builtin_prefetch%>; using zero" msgstr "le troisième argument de %<__builtin_prefetch%> est invalide; utilisation de zéro" #: builtins.c:3132 -#, fuzzy, gcc-internal-format -#| msgid "%K%qD: specified size %wu exceeds maximum object size %wu" +#, gcc-internal-format msgid "%K%qD specified size %E exceeds maximum object size %E" -msgstr "%K%qD: la taille %wu spécifiée excède la taille maximale %wu de l'objet" +msgstr "%K%qD: la taille %E spécifiée excède la taille maximale %E de l'objet" #: builtins.c:3137 -#, fuzzy, gcc-internal-format -#| msgid "%K%qD: specified size between %wu and %wu exceeds maximum object size %wu" +#, gcc-internal-format msgid "%K%qD specified size between %E and %E exceeds maximum object size %E" -msgstr "%K%qD: la taille spécifiée entre %wu et %wu excède la taille maximale %wu de l'objet" +msgstr "%K%qD: la taille spécifiée entre %E et %E excède la taille maximale %E de l'objet" #: builtins.c:3170 builtins.c:3186 -#, fuzzy, gcc-internal-format -#| msgid "%K%qD writing %wu bytes into a region of size %wu overflows the destination" +#, gcc-internal-format msgid "%K%qD writing %E or more bytes into a region of size %E overflows the destination" -msgstr "%K%qD: l'écriture de %wu octets dans une région de taille %wu déborde de la destination" +msgstr "%K%qD: l'écriture de %E octets ou plus dans une région de taille %E déborde de la destination" #: builtins.c:3177 -#, fuzzy, gcc-internal-format -#| msgid "%K%qD: writing %wu byte into a region of size %wu overflows the destination" +#, gcc-internal-format msgid "%K%qD writing %E byte into a region of size %E overflows the destination" -msgstr "%K%qD: l'écriture de %wu octet dans une région de taille %wu déborde de la destination" +msgstr "%K%qD: l'écriture de %E octet dans une région de taille %E déborde de la destination" #: builtins.c:3179 -#, fuzzy, gcc-internal-format -#| msgid "%K%qD writing %wu bytes into a region of size %wu overflows the destination" +#, gcc-internal-format msgid "%K%qD writing %E bytes into a region of size %E overflows the destination" -msgstr "%K%qD: l'écriture de %wu octets dans une région de taille %wu déborde de la destination" +msgstr "%K%qD: l'écriture de %E octets dans une région de taille %E déborde de la destination" #: builtins.c:3192 -#, fuzzy, gcc-internal-format -#| msgid "%K%qD: writing between %wu and %wu bytes into a region of size %wu overflows the destination" +#, gcc-internal-format msgid "%K%qD writing between %E and %E bytes into a region of size %E overflows the destination" -msgstr "%K%qD: écrire entre %wu et %wu octets dans une région de taille %wu déborde de la destination" +msgstr "%K%qD: écrire entre %E et %E octets dans une région de taille %E déborde de la destination" #: builtins.c:3228 -#, fuzzy, gcc-internal-format -#| msgid "%K%qD: specified bound %wu exceeds maximum object size %wu" +#, gcc-internal-format msgid "%K%qD specified bound %E exceeds maximum object size %E" -msgstr "%K%qD: la limite spécifiée (%wu) excède la taille maximale de l'objet (%wu)" +msgstr "%K%qD: la limite spécifiée (%E) excède la taille maximale de l'objet (%E)" #: builtins.c:3234 -#, fuzzy, gcc-internal-format -#| msgid "%K%qD: specified bound between %wu and %wu exceeds maximum object size %wu" +#, gcc-internal-format msgid "%K%qD specified bound between %E and %E exceeds maximum object size %E" -msgstr "%K%qD: la limite spécifiée entre %wu et %wu excède la taille maximale de l'objet (%wu)" +msgstr "%K%qD: la limite spécifiée entre %E et %E excède la taille maximale de l'objet (%E)" #: builtins.c:3249 -#, fuzzy, gcc-internal-format -#| msgid "%K%qD: specified bound %wu exceeds maximum object size %wu" +#, gcc-internal-format msgid "%K%qD specified bound %E exceeds destination size %E" -msgstr "%K%qD: la limite spécifiée (%wu) excède la taille maximale de l'objet (%wu)" +msgstr "%K%qD: la limite spécifiée (%E) excède la taille de la destination (%E)" #: builtins.c:3255 -#, fuzzy, gcc-internal-format -#| msgid "%K%qD: specified bound between %wu and %wu exceeds maximum object size %wu" +#, gcc-internal-format msgid "%K%qD specified bound between %E and %E exceeds destination size %E" -msgstr "%K%qD: la limite spécifiée entre %wu et %wu excède la taille maximale de l'objet (%wu)" +msgstr "%K%qD: la limite spécifiée entre %E et %E excède la taille de la destination (%E)" #: builtins.c:3278 -#, fuzzy, gcc-internal-format -#| msgid "%<%.*s%> directive writing %wu byte into a region of size %wu" +#, gcc-internal-format msgid "%K%qD reading %E byte from a region of size %E" -msgstr "la directive %<%.*s%> écrit %wu octet dans une région dont la taille est %wu" +msgstr "%K%qD lecture de %E octet depuis une région de taille %E" #: builtins.c:3279 -#, fuzzy, gcc-internal-format -#| msgid "%<%.*s%> directive writing %wu bytes into a region of size %wu" +#, gcc-internal-format msgid "%K%qD reading %E bytes from a region of size %E" -msgstr "la directive %<%.*s%> écrit %wu octets dans une région dont la taille est %wu" +msgstr "%K%qD lecture de %E octets depuis une région de taille %E" #: builtins.c:3285 -#, fuzzy, gcc-internal-format -#| msgid "%<%.*s%> directive writing %wu or more bytes into a region of size %wu" +#, gcc-internal-format msgid "%K%qD reading %E or more bytes from a region of size %E" -msgstr "la directive %<%.*s%> écrit %wu ou plus d'octets dans une région dont la taille est %wu" +msgstr "%K%qD lecture de %E octets ou plus depuis une région de taille %E" #: builtins.c:3291 -#, fuzzy, gcc-internal-format -#| msgid "%<%.*s%> directive writing between %wu and %wu bytes into a region of size %wu" +#, gcc-internal-format msgid "%K%qD reading between %E and %E bytes from a region of size %E" -msgstr "la directive %<%.*s%> écrit entre %wu et %wu octets dans une région dont la taille est %wu" +msgstr "%K%qD lecture entre %E et %E octets depuis une région de taille %E" #: builtins.c:3965 builtins.c:4031 -#, fuzzy, gcc-internal-format -#| msgid "specified bound %wu equals the size of the destination" +#, gcc-internal-format msgid "%K%qD specified bound %E equals destination size" -msgstr "la limite spécifiée (%wu) est égale à la taille de la destination" +msgstr "%K%qD la limite %E spécifiée est égale à la taille de la destination" #: builtins.c:4879 gimplify.c:3272 #, gcc-internal-format @@ -16660,16 +16477,14 @@ msgid "undefined behavior when second parameter of % is declared with msgstr "le comportement est indéfini quand le second paramètre de % est déclaré avec le stockage %" #: builtins.c:9806 -#, fuzzy, gcc-internal-format -#| msgid "%Kfirst argument of %D must be a pointer, second integer constant" +#, gcc-internal-format msgid "%Kfirst argument of %qD must be a pointer, second integer constant" -msgstr "%Kle premier argument de %D doit être un pointeur et le second une constante entière" +msgstr "%Kle premier argument de %qD doit être un pointeur et le second une constante entière" #: builtins.c:9819 -#, fuzzy, gcc-internal-format -#| msgid "%Klast argument of %D is not integer constant between 0 and 3" +#, gcc-internal-format msgid "%Klast argument of %qD is not integer constant between 0 and 3" -msgstr "%Kle dernier argument de %D n'est pas une constante entière entre 0 et 3" +msgstr "%Kle dernier argument de %qD n'est pas une constante entière entre 0 et 3" #: builtins.c:10095 #, gcc-internal-format @@ -16734,19 +16549,17 @@ msgstr "dans un appel à la fonction d'allocation %qD déclarée ici" #: calls.c:1711 #, gcc-internal-format msgid "%qD argument %i declared attribute % is smaller than the specified bound %E" -msgstr "" +msgstr "l'argument %qD %i a déclaré l'attribut % est plus petit que la limité %E spécifiée" #: calls.c:1716 -#, fuzzy, gcc-internal-format -#| msgid "%qD was not declared %" +#, gcc-internal-format msgid "%qD argument %i declared attribute %" -msgstr "%qD n'a pas été déclaré %" +msgstr "l'argument %qD %i a déclaré l'attribut %" #: calls.c:1721 -#, fuzzy, gcc-internal-format -#| msgid "routine %qD declared here" +#, gcc-internal-format msgid "argument %qD declared here" -msgstr "la routine %qD est déclarée ici" +msgstr "l'argument %qD est déclarée ici" #: calls.c:1735 #, gcc-internal-format, gfc-internal-format @@ -16856,16 +16669,14 @@ msgid "verify_flow_info: Block %i lacks loop_father" msgstr "verify_flow_info: Le bloc %i n'a pas de loop_father" #: cfghooks.c:146 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "verify_flow_info: Wrong count of block %i %i" +#, gcc-internal-format, gfc-internal-format msgid "verify_flow_info: Wrong count of block %i" -msgstr "verify_flow_info: Nombre de blocs erroné %i %i" +msgstr "verify_flow_info: Décompte du bloc %i erroné" #: cfghooks.c:154 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "verify_flow_info: Wrong count of block %i %i" +#, gcc-internal-format, gfc-internal-format msgid "verify_flow_info: Missing count of block %i" -msgstr "verify_flow_info: Nombre de blocs erroné %i %i" +msgstr "verify_flow_info: Décompte du bloc %i manquant" #: cfghooks.c:162 #, gcc-internal-format, gfc-internal-format @@ -16873,16 +16684,14 @@ msgid "verify_flow_info: Duplicate edge %i->%i" msgstr "verify_flow_info: Arête dupliquée %i->%i" #: cfghooks.c:171 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "verify_flow_info: Wrong probability of edge %i->%i %i" +#, gcc-internal-format, gfc-internal-format msgid "Uninitialized probability of edge %i->%i" -msgstr "verify_flow_info: Mauvaise probabilité de l'arête %i->%i %i" +msgstr "Probabilité non initialisée de l'arête %i->%i" #: cfghooks.c:177 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "verify_flow_info: Wrong probability of edge %i->%i %i" +#, gcc-internal-format, gfc-internal-format msgid "verify_flow_info: Wrong probability of edge %i->%i" -msgstr "verify_flow_info: Mauvaise probabilité de l'arête %i->%i %i" +msgstr "verify_flow_info: Mauvaise probabilité de l'arête %i->%ii" #: cfghooks.c:189 #, gcc-internal-format, gfc-internal-format @@ -17160,10 +16969,9 @@ msgid "%d exits recorded for loop %d (having %d exits)" msgstr "%d sorties enregistrées pour la boucle %d (qui a %d sorties)" #: cfgrtl.c:2349 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "non-cold basic block %d dominated by a block in the cold partition (%d)" +#, gcc-internal-format, gfc-internal-format msgid "non-cold basic block %d reachable only by paths crossing the cold partition" -msgstr "le bloc de base %d n'est pas froid mais il est dominé par un bloc dans la partition froide (%d)" +msgstr "le bloc de base %d n'est pas froid mais il ne peut être atteint que par des chemins traversant la partition froide" #: cfgrtl.c:2421 #, gcc-internal-format, gfc-internal-format @@ -17176,15 +16984,14 @@ msgid "partition found but function partition flag not set" msgstr "une partition a été trouvée mais le fanion de partition de fonction n'est pas mis" #: cfgrtl.c:2468 -#, fuzzy, gcc-internal-format -#| msgid "verify_flow_info: REG_BR_PROB does not match cfg %i %i" +#, gcc-internal-format msgid "verify_flow_info: REG_BR_PROB is set but cfg probability is not" -msgstr "verify_flow_info: REG_BR_PROB ne correspond pas à la config %i %i" +msgstr "verify_flow_info: REG_BR_PROB est défini mais la probabilité du CFG (Control Flow Graph) ne l'est pas" #: cfgrtl.c:2477 #, gcc-internal-format, gfc-internal-format msgid "verify_flow_info: REG_BR_PROB does not match cfg %i %i" -msgstr "verify_flow_info: REG_BR_PROB ne correspond pas à la config %i %i" +msgstr "verify_flow_info: REG_BR_PROB ne correspond pas au CFG (Control Flow Graph) %i %i" #: cfgrtl.c:2499 #, gcc-internal-format @@ -17343,10 +17150,9 @@ msgid "number of bb notes in insn chain (%d) != n_basic_blocks (%d)" msgstr "le nombre d'annotations des bb dans la chaîne des insn (%d) != n_basic_blocks (%d)" #: cgraph.c:3051 -#, fuzzy, gcc-internal-format -#| msgid "caller edge count is negative" +#, gcc-internal-format msgid "caller edge count invalid" -msgstr "le nombre d'arêtes de l'appelant est négatif" +msgstr "le nombre d'arêtes de l'appelant est invalide" #: cgraph.c:3135 #, gcc-internal-format, gfc-internal-format @@ -17356,7 +17162,7 @@ msgstr "champ aux défini pour l'arête %s->%s" #: cgraph.c:3142 #, gcc-internal-format msgid "cgraph count invalid" -msgstr "" +msgstr "décompte cgraph invalide" #: cgraph.c:3147 #, gcc-internal-format @@ -17414,16 +17220,14 @@ msgid "inlined_to pointer set for noninline callers" msgstr "pointeur inlined_to défini pour des appelants pas en ligne" #: cgraph.c:3239 -#, fuzzy, gcc-internal-format -#| msgid "caller edge frequency %i does not match BB frequency %i" +#, gcc-internal-format msgid "caller edge count does not match BB count" -msgstr "la fréquence de l'arête d'appelant %i ne correspond pas à la fréquence du BB %i" +msgstr "le décompte des arêtes de l'appelant ne correspond pas au décompte du BB" #: cgraph.c:3261 -#, fuzzy, gcc-internal-format -#| msgid "indirect call frequency %i does not match BB frequency %i" +#, gcc-internal-format msgid "indirect call count does not match BB count" -msgstr "la fréquence d'appel indirecte %i ne correspond pas à la fréquence du BB %i" +msgstr "le décompte des appels indirects ne correspond pas au décompte du BB" #: cgraph.c:3272 #, gcc-internal-format @@ -17622,34 +17426,29 @@ msgid "%qD defined but not used" msgstr "%qD défini mais pas utilisé" #: cgraphunit.c:1350 -#, fuzzy, gcc-internal-format -#| msgid "% must return type %qT" +#, gcc-internal-format msgid "% resolver for %qD must return %qT" -msgstr "% doit retourner le type %qT" +msgstr "le résolveur % pour %qD doit retourner %qT" #: cgraphunit.c:1353 cgraphunit.c:1375 -#, fuzzy, gcc-internal-format -#| msgid "in a call to function %qD declared here" +#, gcc-internal-format msgid "resolver indirect function declared here" -msgstr "dans un appel à la fonction %qD déclarée ici" +msgstr "fonction indirect du résolveur déclarée ici" #: cgraphunit.c:1372 -#, fuzzy, gcc-internal-format -#| msgid "prefix %qD should return %qT" +#, gcc-internal-format msgid "% resolver for %qD should return %qT" -msgstr "%qD préfixé devrait retourner %qT" +msgstr "le résolveur % pour %qD devrait retourner %qT" #: cgraphunit.c:1379 -#, fuzzy, gcc-internal-format -#| msgid "Warn about casting functions to incompatible types." +#, gcc-internal-format msgid "%qD alias between functions of incompatible types %qT and %qT" -msgstr "Avertir quand des fonctions sont transtypées vers des types incompatibles." +msgstr "alias %qD entre des fonctions de types incompatibles %qT et %qT" #: cgraphunit.c:1382 cgraphunit.c:1461 -#, fuzzy, gcc-internal-format -#| msgid "friend declaration here" +#, gcc-internal-format msgid "aliased declaration here" -msgstr "déclaration amie ici" +msgstr "déclaration alias ici" #: cgraphunit.c:1419 c-family/c-pragma.c:337 #, gcc-internal-format @@ -17662,8 +17461,7 @@ msgid "%q+D aliased to external symbol %qE" msgstr "%q+D est un synonyme vers le symbole externe %qE" #: cgraphunit.c:1458 -#, fuzzy, gcc-internal-format -#| msgid "%q+D alias in between function and variable is not supported" +#, gcc-internal-format msgid "%q+D alias between function and variable is not supported" msgstr "l'alias %q+D entre une fonction et une variable n'est pas supporté" @@ -18168,10 +17966,9 @@ msgid "%Kcall to %qs declared with attribute warning: %s" msgstr "%Kappel à %qs déclaré avec un avertissement d'attribut: %s" #: file-prefix-map.c:50 -#, fuzzy, gcc-internal-format -#| msgid "invalid argument to %qD" +#, gcc-internal-format msgid "invalid argument %qs to %qs" -msgstr "argument invalide pour %qD" +msgstr "argument %qs invalide pour %qs" #: final.c:1789 #, gcc-internal-format @@ -18316,10 +18113,9 @@ msgstr "erreur à l'obtention des temps du processus: %m" #. The inferior failed to catch the signal. #: gcc.c:3151 gcc.c:3175 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "Use alternate register names." +#, gcc-internal-format, gfc-internal-format msgid "%s signal terminated program %s" -msgstr "Utiliser les noms alternatifs de registres." +msgstr "le signal %s a terminé le programme %s" #: gcc.c:3653 opts-common.c:1233 opts-common.c:1257 opts-global.c:139 #, gcc-internal-format @@ -18446,10 +18242,9 @@ msgid "malformed spec function arguments" msgstr "arguments pour la fonction de spec mal composés" #: gcc.c:6330 -#, fuzzy, gcc-internal-format -#| msgid "braced spec %qs is invalid at %qc" +#, gcc-internal-format msgid "braced spec %qs ends in escape" -msgstr "la spec entre accolades %qs est invalide à %qc" +msgstr "la spec entre accolades %qs se termine dans un échappement" #: gcc.c:6465 #, gcc-internal-format @@ -18770,56 +18565,45 @@ msgid "can%'t write PCH file" msgstr "ne peut écrire dans le fichier PCH" #: gimple-fold.c:719 gimple-fold.c:1604 gimple-fold.c:2512 gimple-fold.c:2620 -#, fuzzy, gcc-internal-format -#| msgid "%qE argument is not a function" +#, gcc-internal-format msgid "%qD source argument is the same as destination" -msgstr "l'argument de %qE n'est pas une fonction" +msgstr "l'argument source %qD est le même que la destination" #: gimple-fold.c:1658 msgid "%G%qD destination unchanged after copying no bytes from a string of length %E" -msgstr "" +msgstr "la destination %G%qD n'a pas été changée après n'avoir copié aucun octet depuis une chaîne de longueur %E" #: gimple-fold.c:1663 msgid "%G%qD destination unchanged after copying no bytes" -msgstr "" +msgstr "la destination %G%qD n'a pas été changée après n'avoir copié aucun octet" #: gimple-fold.c:1699 -#, fuzzy -#| msgid "%<%.*s%> directive output truncated writing %wu byte into a region of size %wu" msgid "%G%qD output truncated copying %E byte from a string of length %E" -msgstr "la sortie de la directive %<%.*s%> a été tronquée en écrivant %wu octet dans une région dont la taille est %wu" +msgstr "la sortie de %G%qD a été tronquée en copiant %E octet depuis une chaîne de longueur %E" #: gimple-fold.c:1701 -#, fuzzy -#| msgid "%<%.*s%> directive output truncated writing %wu bytes into a region of size %wu" msgid "%G%qD output truncated copying %E bytes from a string of length %E" -msgstr "la sortie de la directive %<%.*s%> a été tronquée en écrivant %wu octets dans une région dont la taille est %wu" +msgstr "la sortie de %G%qD a été tronquée en copiant %E octets depuis une chaîne de longueur %E" #: gimple-fold.c:1712 msgid "%G%qD output truncated before terminating nul copying %E byte from a string of the same length" -msgstr "" +msgstr "la sortie de %G%qD a été tronquée avant le zéro de fin en copiant %E octet depuis une chaîne de la même longueur" #: gimple-fold.c:1715 msgid "%G%qD output truncated before terminating nul copying %E bytes from a string of the same length" -msgstr "" +msgstr "la sortie de %G%qD a été tronquée avant le zéro de fin en copiant %E octets depuis une chaîne de la même longueur" #: gimple-fold.c:2060 -#, fuzzy -#| msgid "specified bound %wu equals the size of the destination" msgid "%G%qD specified bound %E equals destination size" -msgstr "la limite spécifiée (%wu) est égale à la taille de la destination" +msgstr "la limite spécifiée par %G%qD (%E) est égale à la taille de la destination" #: gimple-fold.c:2062 -#, fuzzy -#| msgid "%K%qD: specified bound %wu exceeds maximum object size %wu" msgid "%G%qD specified bound %E exceeds destination size %wu" -msgstr "%K%qD: la limite spécifiée (%wu) excède la taille maximale de l'objet (%wu)" +msgstr "la limite spécifiée par %G%qD (%E) excède la taille de la destination (%wu)" #: gimple-fold.c:2078 -#, fuzzy -#| msgid "specified bound %wu equals the size of the destination" msgid "%G%qD specified bound %E equals source length" -msgstr "la limite spécifiée (%wu) est égale à la taille de la destination" +msgstr "la limite spécifiée par %G%qD (%E) est égale la longueur de la destination" #: gimple-ssa-isolate-paths.c:290 #, gcc-internal-format @@ -19067,12 +18851,11 @@ msgid "%<%.*s%> directive output between %wu and %wu bytes may cause result to e msgstr "la sortie de la directive %<%.*s%> qui contient entre %wu et %wu octets peut faire déborder le résultat au delà de %" #: gimple-ssa-sprintf.c:2944 -#, fuzzy, gcc-internal-format -#| msgid "assuming directive output of %wu byte" +#, gcc-internal-format msgid "assuming directive output of %wu byte" msgid_plural "assuming directive output of %wu bytes" msgstr[0] "on suppose que la sortie de la directive occupe %wu octet" -msgstr[1] "on suppose que la sortie de la directive occupe %wu octet" +msgstr[1] "on suppose que la sortie de la directive occupe %wu octets" #: gimple-ssa-sprintf.c:2951 #, gcc-internal-format @@ -19120,8 +18903,7 @@ msgid "specified bound %wu exceeds maximum object size %wu" msgstr "la limite spécifiée %wu excède la taille maximale de l'objet (%wu)" #: gimple-ssa-sprintf.c:3893 -#, fuzzy, gcc-internal-format -#| msgid "specified bound %wu exceeds %" +#, gcc-internal-format msgid "specified bound %wu exceeds %" msgstr "la limite spécifiée %wu excède %" @@ -19222,167 +19004,152 @@ msgstr "l'argument de % est zéro" #: gimple-ssa-warn-restrict.c:1296 msgid "%G%qD accessing %wu byte at offsets %s and %s overlaps %wu byte at offset %s" -msgstr "" +msgstr "%G%qD accède à %wu octet aux décalages %s et %s qui chevauchent %wu octet au décalage %s" #: gimple-ssa-warn-restrict.c:1298 msgid "%G%qD accessing %wu byte at offsets %s and %s overlaps %wu bytes at offset %s" -msgstr "" +msgstr "%G%qD accède à %wu octet aux décalages %s et %s qui chevauchent %wu octets au décalage %s" #: gimple-ssa-warn-restrict.c:1302 msgid "%G%qD accessing %wu bytes at offsets %s and %s overlaps %wu byte at offset %s" -msgstr "" +msgstr "%G%qD accède à %wu octets aux décalages %s et %s qui chevauchent %wu octet au décalage %s" #: gimple-ssa-warn-restrict.c:1304 msgid "%G%qD accessing %wu bytes at offsets %s and %s overlaps %wu bytes at offset %s" -msgstr "" +msgstr "%G%qD accède à %wu octets aux décalages %s et %s qui chevauchent %wu octets au décalage %s" #: gimple-ssa-warn-restrict.c:1312 msgid "%G%qD accessing %wu byte at offsets %s and %s overlaps between %wu and %wu bytes at offset %s" -msgstr "" +msgstr "%G%qD accède à %wu octet aux décalages %s et %s qui chevauchent entre %wu et %wu octets au décalage %s" #: gimple-ssa-warn-restrict.c:1315 msgid "%G%qD accessing %wu bytes at offsets %s and %s overlaps between %wu and %wu bytes at offset %s" -msgstr "" +msgstr "%G%qD accède à %wu octets aux décalages %s et %s qui chevauchent entre %wu et %wu octets au décalage %s" #: gimple-ssa-warn-restrict.c:1324 msgid "%G%qD accessing %wu byte at offsets %s and %s overlaps %wu or more bytes at offset %s" -msgstr "" +msgstr "%G%qD accède à %wu octet aux décalages %s et %s qui chevauchent %wu ou plus d'octets au décalage %s" #: gimple-ssa-warn-restrict.c:1326 msgid "%G%qD accessing %wu bytes at offsets %s and %s overlaps %wu or more bytes at offset %s" -msgstr "" +msgstr "%G%qD accède à %wu octets aux décalages %s et %s qui chevauchent %wu ou plus d'octets au décalage %s" #: gimple-ssa-warn-restrict.c:1338 -#, fuzzy -#| msgid "%K%qD: writing between %wu and %wu bytes into a region of size %wu overflows the destination" msgid "%G%qD accessing between %wu and %wu bytes at offsets %s and %s overlaps %wu byte at offset %s" -msgstr "%K%qD: écrire entre %wu et %wu octets dans une région de taille %wu déborde de la destination" +msgstr "%G%qD accède à entre %wu et %wu octets aux décalages %s et %s qui chevauchent %wu octet au décalage %s" #: gimple-ssa-warn-restrict.c:1341 -#, fuzzy -#| msgid "%K%qD: writing between %wu and %wu bytes into a region of size %wu overflows the destination" msgid "%G%qD accessing between %wu and %wu bytes at offsets %s and %s overlaps %wu bytes at offset %s" -msgstr "%K%qD: écrire entre %wu et %wu octets dans une région de taille %wu déborde de la destination" +msgstr "%G%qD accède à entre %wu et %wu octets aux offsets %s et %s qui chevauchent %wu octets au décalage %s" #: gimple-ssa-warn-restrict.c:1348 -#, fuzzy -#| msgid "%<%.*s%> directive writing between %wu and %wu bytes into a region of size between %wu and %wu" msgid "%G%qD accessing between %wu and %wu bytes at offsets %s and %s overlaps between %wu and %wu bytes at offset %s" -msgstr "la directive %<%.*s%> écrit entre %wu et %wu octets dans une région dont la taille est comprise entre %wu et %wu" +msgstr "%G%qD accède à entre %wu et %wu octets aux offsets %s et %s qui chevauchent entre %wu et %wu octets au décalage %s" #: gimple-ssa-warn-restrict.c:1356 msgid "%G%qD accessing between %wu and %wu bytes at offsets %s and %s overlaps %wu or more bytes at offset %s" -msgstr "" +msgstr "%G%qD accède à entre %wu et %wu octets aux offsets %s et %s qui chevauchent %wu ou plus d'octets au décalage %s" #: gimple-ssa-warn-restrict.c:1370 msgid "%G%qD accessing %wu or more bytes at offsets %s and %s overlaps %wu byte at offset %s" -msgstr "" +msgstr "%G%qD accède à %wu ou plus d'octets aux offsets %s et %s qui chevauchent %wu octet au décalage %s" #: gimple-ssa-warn-restrict.c:1372 msgid "%G%qD accessing %wu or more bytes at offsets %s and %s overlaps %wu bytes at offset %s" -msgstr "" +msgstr "%G%qD accède à %wu ou plus d'octets aux offsets %s et %s qui chevauchent %wu octets au décalage %s" #: gimple-ssa-warn-restrict.c:1378 msgid "%G%qD accessing %wu or more bytes at offsets %s and %s overlaps between %wu and %wu bytes at offset %s" -msgstr "" +msgstr "%G%qD accède à %wu ou plus d'octets aux offsets %s et %s qui chevauchent entre %wu et %wu octets au décalage %s" #: gimple-ssa-warn-restrict.c:1385 msgid "%G%qD accessing %wu or more bytes at offsets %s and %s overlaps %wu or more bytes at offset %s" -msgstr "" +msgstr "%G%qD accède à %wu ou plus d'octets aux offsets %s et %s qui chevauchent %wu ou plus d'octets au décalage %s" #: gimple-ssa-warn-restrict.c:1407 msgid "%G%qD accessing %wu byte may overlap %wu byte" -msgstr "" +msgstr "%G%qD accède à %wu octet qui peut chevaucher %wu octet" #: gimple-ssa-warn-restrict.c:1409 msgid "%G%qD accessing %wu bytes may overlap %wu byte" -msgstr "" +msgstr "%G%qD accède à %wu octets qui peuvent chevaucher %wu octet" #: gimple-ssa-warn-restrict.c:1415 msgid "%G%qD accessing %wu byte at offsets %s and %s may overlap %wu byte at offset %s" -msgstr "" +msgstr "%G%qD accède à %wu octet aux décalages %s et %s qui peut chevaucher %wu octet au décalage %s" #: gimple-ssa-warn-restrict.c:1417 msgid "%G%qD accessing %wu bytes at offsets %s and %s may overlap %wu byte at offset %s" -msgstr "" +msgstr "%G%qD accède à %wu octets aux décalages %s et %s qui peuvent chevaucher %wu octet au décalage %s" #: gimple-ssa-warn-restrict.c:1427 msgid "%G%qD accessing %wu byte may overlap up to %wu bytes" -msgstr "" +msgstr "%G%qD accède à %wu octet qui peut chevaucher jusqu'à %wu octets" #: gimple-ssa-warn-restrict.c:1429 msgid "%G%qD accessing %wu bytes may overlap up to %wu bytes" -msgstr "" +msgstr "%G%qD accède à %wu octets qui peuvent chevaucher jusqu'à %wu octets" #: gimple-ssa-warn-restrict.c:1435 msgid "%G%qD accessing %wu byte at offsets %s and %s may overlap up to %wu bytes at offset %s" -msgstr "" +msgstr "%G%qD accède à %wu octet aux décalages %s et %s qui peut chevaucher jusqu'à %wu octets au décalage %s" #: gimple-ssa-warn-restrict.c:1437 msgid "%G%qD accessing %wu bytes at offsets %s and %s may overlap up to %wu bytes at offset %s" -msgstr "" +msgstr "%G%qD accède à %wu octets aux décalages %s et %s qui peuvent chevaucher jusqu'à %wu octets au décalage %s" #: gimple-ssa-warn-restrict.c:1449 -#, fuzzy -#| msgid "%K%qD: specified size between %wu and %wu exceeds maximum object size %wu" msgid "%G%qD accessing between %wu and %wu bytes may overlap %wu byte" -msgstr "%K%qD: la taille spécifiée entre %wu et %wu excède la taille maximale %wu de l'objet" +msgstr "%G%qD accède à entre %wu et %wu octets qui peuvent chevaucher %wu octet" #: gimple-ssa-warn-restrict.c:1451 -#, fuzzy -#| msgid "%K%qD: specified size between %wu and %wu exceeds maximum object size %wu" msgid "%G%qD accessing between %wu and %wu bytes may overlap up to %wu bytes" -msgstr "%K%qD: la taille spécifiée entre %wu et %wu excède la taille maximale %wu de l'objet" +msgstr "%G%qD accède à entre %wu et %wu octets qui peuvent chevaucher jusqu'à %wu octets" #: gimple-ssa-warn-restrict.c:1457 -#, fuzzy -#| msgid "%K%qD: writing between %wu and %wu bytes into a region of size %wu overflows the destination" msgid "%G%qD accessing between %wu and %wu bytes at offsets %s and %s may overlap %wu byte at offset %s" -msgstr "%K%qD: écrire entre %wu et %wu octets dans une région de taille %wu déborde de la destination" +msgstr "%G%qD accède à entre %wu et %wu octets aux décalages %s et %s qui peuvent chevaucher %wu octet au décalage %s" #: gimple-ssa-warn-restrict.c:1460 msgid "%G%qD accessing between %wu and %wu bytes at offsets %s and %s may overlap up to %wu bytes at offset %s" -msgstr "" +msgstr "%G%qD accède à entre %wu et %wu octets aux décalages %s et %s qui peuvent chevaucher jusqu'à %wu octets au décalage %s" #: gimple-ssa-warn-restrict.c:1470 msgid "%G%qD accessing %wu or more bytes at offsets %s and %s may overlap %wu byte at offset %s" -msgstr "" +msgstr "%G%qD accède à %wu ou plus d'octets aux décalages %s et %s qui peuvent chevaucher %wu octet au décalage %s" #: gimple-ssa-warn-restrict.c:1472 msgid "%G%qD accessing %wu or more bytes at offsets %s and %s may overlap up to %wu bytes at offset %s" -msgstr "" +msgstr "%G%qD accède à %wu ou plus d'octets aux décalages %s et %s qui peuvent chevaucher jusqu'à %wu octets au décalage %s" #: gimple-ssa-warn-restrict.c:1530 msgid "%G%qD pointer overflow between offset %s and size %s accessing array %qD with type %qT" -msgstr "" +msgstr "%G%qD subit un débordement de pointeur entre le décalage %s et la taille %s en accédant au tableau %qD avec le type %qT" #: gimple-ssa-warn-restrict.c:1534 -#, fuzzy, gcc-internal-format -#| msgid "array member %q#D declared here" +#, gcc-internal-format msgid "array %qD declared here" -msgstr "membre tableau %q#D déclaré ici" +msgstr "tableau %qD déclaré ici" #: gimple-ssa-warn-restrict.c:1537 gimple-ssa-warn-restrict.c:1543 msgid "%G%qD pointer overflow between offset %s and size %s" -msgstr "" +msgstr "%G%qD subit un débordement de pointeur entre le décalage %s et la taille %s" #: gimple-ssa-warn-restrict.c:1561 msgid "%G%qD forming offset %s is out of the bounds [0, %wu] of object %qD with type %qT" -msgstr "" +msgstr "%G%qD forme le décalage %s qui est hors des limites [0, %wu] de l'objet %qD avec le type %qT" #: gimple-ssa-warn-restrict.c:1564 msgid "%G%qD offset %s is out of the bounds [0, %wu] of object %qD with type %qT" -msgstr "" +msgstr "%G%qD décalage %s hors des limites [0, %wu] de l'objet %qD avec le type %qT" #: gimple-ssa-warn-restrict.c:1570 msgid "%G%qD forming offset %s is out of the bounds of object %qD with type %qT" -msgstr "" +msgstr "%G%qD forme le décalage %s qui est hors des limites de l'objet %qD avec le type %qT" #: gimple-ssa-warn-restrict.c:1572 -#, fuzzy -#| msgid "array subscript value %qE is outside the bounds of array %qD of type %qT" msgid "%G%qD offset %s is out of the bounds of object %qD with type %qT" -msgstr "la valeur %qE de l'indice du tableau est hors des limites du tableau %qD du type %qT" +msgstr "%G%qD le décalage %s est hors des limites de l'objet %qD avec le type %qT" #: gimple-ssa-warn-restrict.c:1577 c/c-decl.c:3603 c/c-decl.c:3874 #: c/c-typeck.c:8347 cp/class.c:1358 cp/class.c:3127 cp/decl.c:3902 @@ -19395,37 +19162,31 @@ msgstr "%qD déclaré ici" #: gimple-ssa-warn-restrict.c:1582 msgid "%G%qD forming offset %s is out of the bounds [0, %wu]" -msgstr "" +msgstr "%G%qD qui forme le décalage %s est hors des limites [0, %wu]" #: gimple-ssa-warn-restrict.c:1584 msgid "%G%qD offset %s is out of the bounds [0, %wu]" -msgstr "" +msgstr "%G%qD le décalage %s est hors des limites [0, %wu]" #: gimple-ssa-warn-restrict.c:1589 -#, fuzzy -#| msgid "DIM argument at %L is out of bounds" msgid "%G%qD forming offset %s is out of bounds" -msgstr "L'argument DIM à %L est en dehors des limites" +msgstr "%G%qD qui forme le décalage %s est hors des limites" #: gimple-ssa-warn-restrict.c:1590 -#, fuzzy -#| msgid "DIM argument at %L is out of bounds" msgid "%G%qD offset %s is out of bounds" -msgstr "L'argument DIM à %L est en dehors des limites" +msgstr "%G%qD le décalage %s est hors des limites" #: gimple-ssa-warn-restrict.c:1601 msgid "%G%qD offset %s from the object at %qE is out of the bounds of %qT" -msgstr "" +msgstr "%G%qD le décalage %s depuis l'objet à %qE est hors des limites de %qT" #: gimple-ssa-warn-restrict.c:1610 msgid "%G%qD offset %s from the object at %qE is out of the bounds of referenced subobject %qD with type %qT at offset %wu" -msgstr "" +msgstr "%G%qD le décalage %s depuis l'objet à %qE est hors des limites du sous-objet référencé %qD avec le type %qT au décalage %wu" #: gimple-ssa-warn-restrict.c:1783 -#, fuzzy -#| msgid "%qE argument is not a function" msgid "%G%qD source argument is the same as destination" -msgstr "l'argument de %qE n'est pas une fonction" +msgstr "%G%qD l'argument source est le même que la destination" #: gimple-streamer-in.c:210 #, gcc-internal-format, gfc-internal-format @@ -20296,10 +20057,9 @@ msgid "installation error, can't find crtoffloadtable.o" msgstr "erreur d'installation, impossible de trouver crtoffloadtable.o" #: lto-wrapper.c:1000 lto-wrapper.c:1012 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "%s: %s" +#, gcc-internal-format, gfc-internal-format msgid "%s: %s\n" -msgstr "%s: %s" +msgstr "%s: %s\n" #: lto-wrapper.c:1056 #, gcc-internal-format @@ -20658,10 +20418,9 @@ msgid "argument to %qs should be a non-negative integer" msgstr "l'argument de %qs doit être un entier non négatif" #: opts-common.c:1173 -#, fuzzy, gcc-internal-format -#| msgid "-malign-functions=%d is not between 0 and %d" +#, gcc-internal-format msgid "argument to %qs is not between %d and %d" -msgstr "-malign-functions=%d n'est pas entre 0 et %d" +msgstr "l'argument de %qs n'est pas entre %d et %d" #: opts-common.c:1187 #, gcc-internal-format @@ -20760,28 +20519,24 @@ msgid "section anchors must be disabled when toplevel reorder is disabled" msgstr "les ancres de sections doivent être désactivées quand la réorganisation au plus haut niveau est désactivée" #: opts.c:840 -#, fuzzy, gcc-internal-format -#| msgid "-freorder-blocks-and-partition does not work with exceptions on this architecture" +#, gcc-internal-format msgid "%<-freorder-blocks-and-partition%> does not work with exceptions on this architecture" -msgstr "-freorder-blocks-and-partition ne fonctionne pas avec les exceptions sur cette architecture" +msgstr "%<-freorder-blocks-and-partition%> ne fonctionne pas avec les exceptions sur cette architecture" #: opts.c:856 -#, fuzzy, gcc-internal-format -#| msgid "-freorder-blocks-and-partition does not support unwind info on this architecture" +#, gcc-internal-format msgid "%<-freorder-blocks-and-partition%> does not support unwind info on this architecture" -msgstr "-freorder-blocks-and-partition ne supporte pas les informations de retour en arrière sur cette architecture" +msgstr "%<-freorder-blocks-and-partition%> ne supporte pas les informations de retour en arrière sur cette architecture" #: opts.c:874 -#, fuzzy, gcc-internal-format -#| msgid "-freorder-blocks-and-partition does not work on this architecture" +#, gcc-internal-format msgid "%<-freorder-blocks-and-partition%> does not work on this architecture" -msgstr "-freorder-blocks-and-partition ne fonctionne pas sur cette architecture" +msgstr "%<-freorder-blocks-and-partition%> ne fonctionne pas sur cette architecture" #: opts.c:912 -#, fuzzy, gcc-internal-format -#| msgid "-fno-fat-lto-objects are supported only with linker plugin" +#, gcc-internal-format msgid "%<-fno-fat-lto-objects%> are supported only with linker plugin" -msgstr "-fno-fat-lto-objects n'est supporté qu'avec des greffons de l'éditeur de liens" +msgstr "%<-fno-fat-lto-objects%> n'est supporté qu'avec des greffons de l'éditeur de liens" #: opts.c:926 #, gcc-internal-format @@ -20789,45 +20544,39 @@ msgid "%<-fsplit-stack%> is not supported by this compiler configuration" msgstr "%<-fsplit-stack%> n'est pas supporté par cette configuration du compilateur" #: opts.c:973 -#, fuzzy, gcc-internal-format -#| msgid "-fsanitize=address is incompatible with -fsanitize=kernel-address" +#, gcc-internal-format msgid "%<-fsanitize=pointer-compare%> must be combined with %<-fsanitize=address%> or %<-fsanitize=kernel-address%>" -msgstr "-fsanitize=address est incompatible avec -fsanitize=kernel-address" +msgstr "%<-fsanitize=pointer-compare%> doit être combiné avec %<-fsanitize=address%> ou %<-fsanitize=kernel-address%>" #: opts.c:977 #, gcc-internal-format msgid "%<-fsanitize=pointer-subtract%> must be combined with %<-fsanitize=address%> or %<-fsanitize=kernel-address%>" -msgstr "" +msgstr "%<-fsanitize=pointer-subtract%> doit être combiné avec %<-fsanitize=address%> ou %<-fsanitize=kernel-address%>" #: opts.c:985 -#, fuzzy, gcc-internal-format -#| msgid "-fsanitize=address is incompatible with -fsanitize=kernel-address" +#, gcc-internal-format msgid "%<-fsanitize=address%> is incompatible with %<-fsanitize=kernel-address%>" -msgstr "-fsanitize=address est incompatible avec -fsanitize=kernel-address" +msgstr "%<-fsanitize=address%> est incompatible avec %<-fsanitize=kernel-address%>" #: opts.c:992 -#, fuzzy, gcc-internal-format -#| msgid "-fsanitize=address and -fsanitize=kernel-address are incompatible with -fsanitize=thread" +#, gcc-internal-format msgid "%<-fsanitize=address%> and %<-fsanitize=kernel-address%> are incompatible with %<-fsanitize=thread%>" -msgstr "-fsanitize=address et -fsanitize=kernel-address sont incompatibles avec -fsanitize=thread" +msgstr "%<-fsanitize=address%> et %<-fsanitize=kernel-address%> sont incompatibles avec %<-fsanitize=thread%>" #: opts.c:998 -#, fuzzy, gcc-internal-format -#| msgid "-fsanitize=leak is incompatible with -fsanitize=thread" +#, gcc-internal-format msgid "%<-fsanitize=leak%> is incompatible with %<-fsanitize=thread%>" -msgstr "-fsanitize=leak est incompatible avec -fsanitize=thread" +msgstr "%<-fsanitize=leak%> est incompatible avec %<-fsanitize=thread%>" #: opts.c:1004 -#, fuzzy, gcc-internal-format -#| msgid "-fsanitize-recover=%s is not supported" +#, gcc-internal-format msgid "%<-fsanitize-recover=%s%> is not supported" -msgstr "-fsanitize-recover=%s n'est pas supporté" +msgstr "%<-fsanitize-recover=%s%> n'est pas supporté" #: opts.c:1030 -#, fuzzy, gcc-internal-format -#| msgid "-fsanitize-address-use-after-scope requires -fstack-reuse=none option" +#, gcc-internal-format msgid "%<-fsanitize-address-use-after-scope%> requires %<-fstack-reuse=none%> option" -msgstr "-fsanitize-address-use-after-scope requiert l'option -fstack-reuse=none" +msgstr "%<-fsanitize-address-use-after-scope%> requiert l'option %<-fstack-reuse=none%>" #: opts.c:1037 #, gcc-internal-format @@ -20845,10 +20594,9 @@ msgid "unrecognized include_flags 0x%x passed to print_specific_help" msgstr "include_flags 0x%x non reconnu passé à print_specific_help" #: opts.c:1673 -#, fuzzy, gcc-internal-format -#| msgid "-fsanitize=all option is not valid" +#, gcc-internal-format msgid "%<-fsanitize=all%> option is not valid" -msgstr "l'option -fsanitize-all n'est pas valide" +msgstr "l'option %<-fsanitize=all%> n'est pas valide" #: opts.c:1713 #, gcc-internal-format @@ -20861,10 +20609,9 @@ msgid "unrecognized argument to -f%ssanitize%s= option: %q.*s" msgstr "argument non reconnu pour l'option -f%ssanitize%s=: %q.*s" #: opts.c:1754 -#, fuzzy, gcc-internal-format -#| msgid "%qE attribute directive ignored" +#, gcc-internal-format msgid "%<%s%> attribute directive ignored" -msgstr "directive d'attribut %qE ignorée" +msgstr "directive d'attribut %<%s%> ignorée" #: opts.c:1931 #, gcc-internal-format @@ -20882,10 +20629,9 @@ msgid "HSA has not been enabled during configuration" msgstr "HSA n'a pas été activé durant la configuration" #: opts.c:2206 -#, fuzzy, gcc-internal-format -#| msgid "-foffload-abi option can be specified only for offload compiler" +#, gcc-internal-format msgid "%<-foffload-abi%> option can be specified only for offload compiler" -msgstr "l'option -foffload-abi ne peut être spécifiée qu'avec un compilateur pour le délestage" +msgstr "l'option %<-foffload-abi%> ne peut être spécifiée qu'avec un compilateur pour le délestage" #: opts.c:2214 #, gcc-internal-format, gfc-internal-format @@ -20893,10 +20639,9 @@ msgid "structure alignment must be a small power of two, not %d" msgstr "l'alignement de la structure doit être une petite puissance de 2, pas %d" #: opts.c:2300 -#, fuzzy, gcc-internal-format -#| msgid "invalid argument to built-in function %s" +#, gcc-internal-format msgid "invalid arguments for %<-fpatchable_function_entry%>" -msgstr "argument invalide pour la fonction interne %s" +msgstr "argument invalide pour %<-fpatchable_function_entry%>" #: opts.c:2358 #, gcc-internal-format @@ -21153,10 +20898,9 @@ msgid "-iplugindir option not passed from the gcc driver" msgstr "l'option -iplugindir n'a pas été passée par le pilote gcc" #: predict.c:3309 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "Missing counts for called function %s/%i" +#, gcc-internal-format, gfc-internal-format msgid "Missing counts for called function %s" -msgstr "Décompte des appels manquants pour la fonction %s/%i" +msgstr "Décomptes manquants pour la fonction appelée %s" #: profile.c:456 #, gcc-internal-format, gfc-internal-format @@ -21490,20 +21234,19 @@ msgid "size of %q+D is larger than %wd bytes" msgstr "la taille de %q+D est plus grande que %wd octets" #: stor-layout.c:1150 -#, fuzzy, gcc-internal-format -#| msgid "requested alignment %d is larger than %d" +#, gcc-internal-format msgid "alignment %u of %qT is less than %u" -msgstr "l'alignement %d demandé est plus grand que %d" +msgstr "l'alignement %u de %qT est plus petit que %u" #: stor-layout.c:1157 #, gcc-internal-format msgid "%q+D offset %E in %qT isn%'t aligned to %u" -msgstr "" +msgstr "%q+D le décalage %E dans %qT n'est pas aligné sur %u" #: stor-layout.c:1160 #, gcc-internal-format msgid "%q+D offset %E in %qT may not be aligned to %u" -msgstr "" +msgstr "%q+D le décalage %E dans %qT ne peut pas être aligné sur %u" #: stor-layout.c:1292 #, gcc-internal-format @@ -21561,10 +21304,9 @@ msgid "format string is defined here" msgstr "la chaîne de format est définie ici" #: symtab.c:301 -#, fuzzy, gcc-internal-format -#| msgid "%D renamed after being referenced in assembly" +#, gcc-internal-format msgid "%qD renamed after being referenced in assembly" -msgstr "%D renommé après avoir été référencé dans l'assembleur" +msgstr "%qD renommé après avoir été référencé dans l'assembleur" #: symtab.c:991 #, gcc-internal-format @@ -21817,22 +21559,19 @@ msgid "Graphite loop optimizations cannot be used (isl is not available) (-fgrap msgstr "Les optimisations de boucles Graphite ne peuvent pas être utilisées (isl n'est pas disponible) (-fgraphite, -fgraphite-identity, -floop-nest-optimize, -floop-parallelize-all)" #: toplev.c:1297 -#, fuzzy, gcc-internal-format -#| msgid "%<-fcheck-pointer-bounds%> is not supported for this target" +#, gcc-internal-format msgid "%<-fcf-protection=full%> is not supported for this target" -msgstr "%<-fcheck-pointer-bounds%> n'est pas supporté pour cette cible" +msgstr "%<-fcf-protection=full%> n'est pas supporté pour cette cible" #: toplev.c:1304 -#, fuzzy, gcc-internal-format -#| msgid "-fstack-protector not supported for this target" +#, gcc-internal-format msgid "%<-fcf-protection=branch%> is not supported for this target" -msgstr "-fstack-protector n'est pas supporté pour cette cible" +msgstr "%<-fcf-protection=branch%> n'est pas supporté pour cette cible" #: toplev.c:1311 -#, fuzzy, gcc-internal-format -#| msgid "%<-fcheck-pointer-bounds%> is not supported for this target" +#, gcc-internal-format msgid "%<-fcf-protection=return%> is not supported for this target" -msgstr "%<-fcheck-pointer-bounds%> n'est pas supporté pour cette cible" +msgstr "%<-fcf-protection=return%> n'est pas supporté pour cette cible" #: toplev.c:1322 #, gcc-internal-format @@ -21937,12 +21676,12 @@ msgstr "-fassociative-math désactivé; d'autres options prennent le pas" #: toplev.c:1637 #, gcc-internal-format msgid "%<-fstack-clash-protection%> is not supported on targets where the stack grows from lower to higher addresses" -msgstr "" +msgstr "%<-fstack-clash-protection%> n'est pas supporté sur des cibles où la pile grandi depuis les adresses basses vers les adresses hautes" #: toplev.c:1647 #, gcc-internal-format msgid "%<-fstack-check=%> and %<-fstack-clash_protection%> are mutually exclusive. Disabling %<-fstack-check=%>" -msgstr "" +msgstr "%<-fstack-check=%> et %<-fstack-clash_protection%> sont mutuellement exclusives. %<-fstack-check=%> est désactivée" #: toplev.c:1665 #, gcc-internal-format @@ -22175,16 +21914,14 @@ msgid "invalid operand to plus/minus, type is a pointer" msgstr "opérande invalide à plus/moins, le type est un pointeur" #: tree-cfg.c:3269 -#, fuzzy, gcc-internal-format -#| msgid "invalid operand to pointer plus, first operand is not a pointer" +#, gcc-internal-format msgid "invalid operand to pointer diff, operand is not a pointer" -msgstr "opérande invalide pour le plus pointeur, le premier opérande n'est pas un pointeur" +msgstr "opérande invalide pour le diff pointeur, l'opérande n'est pas un pointeur" #: tree-cfg.c:3277 -#, fuzzy, gcc-internal-format -#| msgid "invalid type for property" +#, gcc-internal-format msgid "invalid type for pointer diff" -msgstr "type invalide pour une propriété" +msgstr "type invalide pour le diff pointeur" #: tree-cfg.c:3288 #, gcc-internal-format @@ -22400,7 +22137,7 @@ msgstr "types invalides dans une conversion vers un entier" #: tree-cfg.c:3935 #, gcc-internal-format msgid "vec_duplicate should be from a scalar to a like vector" -msgstr "" +msgstr "vec_duplicate devrait être d'un scalaire vers un vecteur similaire" #: tree-cfg.c:3949 #, gcc-internal-format @@ -22445,43 +22182,37 @@ msgstr "opérandes (pointeurs) invalides pour plus/moins" #: tree-cfg.c:4109 #, gcc-internal-format msgid "type mismatch in pointer plus expression" -msgstr "désaccord de type dans une expression plus pointeur" +msgstr "désaccord de type dans l'expression plus pointeur" #: tree-cfg.c:4130 -#, fuzzy, gcc-internal-format -#| msgid "type mismatch in pointer plus expression" +#, gcc-internal-format msgid "type mismatch in pointer diff expression" -msgstr "désaccord de type dans une expression plus pointeur" +msgstr "désaccord de type dans l'expression diff pointeur" #: tree-cfg.c:4184 -#, fuzzy, gcc-internal-format -#| msgid "type mismatch in widening vector shift expression" +#, gcc-internal-format msgid "type mismatch in widening sum reduction" -msgstr "désaccord de type dans une expression de décalage d'un vecteur avec élargissement" +msgstr "désaccord de type dans une réduction de somme avec élargissement" #: tree-cfg.c:4204 -#, fuzzy, gcc-internal-format -#| msgid "type mismatch in widening multiply-accumulate expression" +#, gcc-internal-format msgid "type mismatch in vector widening multiplication" -msgstr "désaccord de type dans une expression multiplier et accumuler avec élargissement" +msgstr "désaccord de type dans une multiplication d'élargissement d'un vecteur" #: tree-cfg.c:4238 -#, fuzzy, gcc-internal-format -#| msgid "type mismatch in vector permute expression" +#, gcc-internal-format msgid "type mismatch in vector pack expression" -msgstr "désaccord de type dans une expression de permutation vectorielle" +msgstr "désaccord de type dans une expression pack vectorielle" #: tree-cfg.c:4271 -#, fuzzy, gcc-internal-format -#| msgid "type mismatch in address expression" +#, gcc-internal-format msgid "type mismatch in series expression" -msgstr "désaccord de type dans une expression d'adresse" +msgstr "désaccord de type dans une expression expression de séries" #: tree-cfg.c:4279 -#, fuzzy, gcc-internal-format -#| msgid "vector types expected in sad expression" +#, gcc-internal-format msgid "vector type expected in series expression" -msgstr "types vectoriels attendus dans une expression SAD (Sum of Absolute Difference = Somme des Différences Absolues)" +msgstr "type vectoriel attendu dans une expression de séries" #: tree-cfg.c:4292 #, gcc-internal-format @@ -22574,10 +22305,9 @@ msgid "vector insertion not at element boundary" msgstr "insertion de vecteur pas à la frontière d'un élément" #: tree-cfg.c:4539 -#, fuzzy, gcc-internal-format -#| msgid "type mismatch in vector permute expression" +#, gcc-internal-format msgid "type mismatch in dot product reduction" -msgstr "désaccord de type dans une expression de permutation vectorielle" +msgstr "désaccord de type dans une réduction de produit scalaire" #: tree-cfg.c:4573 #, gcc-internal-format @@ -23147,64 +22877,54 @@ msgid "stmt volatile flag not up-to-date" msgstr "fanion volatile de l'instruction pas à jour" #: tree-ssa-strlen.c:1941 -#, fuzzy, gcc-internal-format -#| msgid "%<%.*s%> directive output truncated writing %wu byte into a region of size %wu" +#, gcc-internal-format msgid "%qD output truncated copying %E byte from a string of length %wu" -msgstr "la sortie de la directive %<%.*s%> a été tronquée en écrivant %wu octet dans une région dont la taille est %wu" +msgstr "la sortie de %qD a été tronquée en copiant %E octet depuis une chaîne de longueur %wu" #: tree-ssa-strlen.c:1943 -#, fuzzy, gcc-internal-format -#| msgid "%<%.*s%> directive output truncated writing %wu bytes into a region of size %wu" +#, gcc-internal-format msgid "%qD output truncated copying %E bytes from a string of length %wu" -msgstr "la sortie de la directive %<%.*s%> a été tronquée en écrivant %wu octets dans une région dont la taille est %wu" +msgstr "la sortie de %qD a été tronquée en copiant %E octets depuis une chaîne de longueur %wu" #: tree-ssa-strlen.c:1948 -#, fuzzy, gcc-internal-format -#| msgid "%<%.*s%> directive output truncated writing between %wu and %wu bytes into a region of size %wu" +#, gcc-internal-format msgid "%qD output truncated copying between %wu and %wu bytes from a string of length %wu" -msgstr "la sortie de la directive %<%.*s%> a été tronquée en écrivant entre %wu et %wu octets dans une région dont la taille est %wu" +msgstr "la sortie de %qD a été tronquée en copiant entre %wu et %wu octets depuis une chaîne de longueur %wu" #: tree-ssa-strlen.c:1960 -#, fuzzy, gcc-internal-format -#| msgid "%<%.*s%> directive output may be truncated writing %wu byte into a region of size %wu" +#, gcc-internal-format msgid "%qD output may be truncated copying %E byte from a string of length %wu" -msgstr "la sortie de la directive %<%.*s%> peut être tronquée en écrivant %wu octet dans une région dont la taille est %wu" +msgstr "la sortie de %qD peut être tronquée en copiant %E octet depuis une chaîne de longueur %wu" #: tree-ssa-strlen.c:1962 -#, fuzzy, gcc-internal-format -#| msgid "%<%.*s%> directive output may be truncated writing %wu bytes into a region of size %wu" +#, gcc-internal-format msgid "%qD output may be truncated copying %E bytes from a string of length %wu" -msgstr "la sortie de la directive %<%.*s%> peut être tronquée en écrivant %wu octets dans une région dont la taille est %wu" +msgstr "la sortie de %qD peut être tronquée en copiant %E octets depuis une chaîne de longueur %wu" #: tree-ssa-strlen.c:1967 tree-ssa-strlen.c:1981 -#, fuzzy, gcc-internal-format -#| msgid "%<%.*s%> directive output may be truncated writing between %wu and %wu bytes into a region of size %wu" +#, gcc-internal-format msgid "%qD output may be truncated copying between %wu and %wu bytes from a string of length %wu" -msgstr "la sortie de la directive %<%.*s%> peut être tronquée en écrivant entre %wu et %wu octets dans une région dont la taille est %wu" +msgstr "la sortie de %qD peut être tronquée en copiant entre %wu et %wu octets depuis une chaîne de longueur %wu" #: tree-ssa-strlen.c:2002 -#, fuzzy, gcc-internal-format -#| msgid "specified bound %wu equals the size of the destination" +#, gcc-internal-format msgid "%qD specified bound %E equals destination size" -msgstr "la limite spécifiée (%wu) est égale à la taille de la destination" +msgstr "%qD la limite spécifiée %E est égale à la taille de la destination" #: tree-ssa-strlen.c:2102 -#, fuzzy, gcc-internal-format -#| msgid "%qE output truncated before the last format character" +#, gcc-internal-format msgid "%qD output truncated before terminating nul copying as many bytes from a string as its length" -msgstr "la sortie de %qE peut être tronquée avant le dernier caractère de format" +msgstr "la sortie de %qD a été tronquée avant le zéro final en copiant autant d'octets depuis la chaîne que sa longueur" #: tree-ssa-strlen.c:2108 -#, fuzzy, gcc-internal-format -#| msgid "%K%qD: specified bound %wu exceeds the size %wu of the destination" +#, gcc-internal-format msgid "%qD specified bound depends on the length of the source argument" -msgstr "%K%qD: la limite spécifiée (%wu) excède la taille %wu de la destination" +msgstr "%qD la limite spécifiée dépend de la longueur de l'argument source" #: tree-ssa-strlen.c:2114 -#, fuzzy, gcc-internal-format -#| msgid "length modifier" +#, gcc-internal-format msgid "length computed here" -msgstr "modificateur de longueur" +msgstr "longueur calculée ici" #: tree-ssa-uninit.c:191 varasm.c:331 #, gcc-internal-format @@ -23412,34 +23132,29 @@ msgid "vectorization did not happen for a simd loop" msgstr "la vectorisation n'a pas eu lieu pour une boucle simd" #: tree-vrp.c:4854 tree-vrp.c:4898 -#, fuzzy, gcc-internal-format -#| msgid "array subscript is above array bounds" +#, gcc-internal-format msgid "array subscript %E is above array bounds of %qT" -msgstr "l'indice du tableau est au delà des limites du tableau" +msgstr "l'indice du tableau %E est au delà des limites de %qT" #: tree-vrp.c:4880 -#, fuzzy, gcc-internal-format -#| msgid "array subscript is outside array bounds" +#, gcc-internal-format msgid "array subscript [%E, %E] is outside array bounds of %qT" -msgstr "l'indice du tableau est en dehors des limites du tableau" +msgstr "l'indice du tableau [%E, %E] est en dehors des limites de %qT" #: tree-vrp.c:4912 -#, fuzzy, gcc-internal-format -#| msgid "array subscript is below array bounds" +#, gcc-internal-format msgid "array subscript %E is below array bounds of %qT" -msgstr "l'indice du tableau est en dessous des limites du tableau" +msgstr "l'indice du tableau %E est en dessous des limites de %qT" #: tree-vrp.c:4970 -#, fuzzy, gcc-internal-format -#| msgid "array subscript is below array bounds" +#, gcc-internal-format msgid "array subscript %wi is below array bounds of %qT" -msgstr "l'indice du tableau est en dessous des limites du tableau" +msgstr "l'indice du tableau %wi est en dessous des limites de %qT" #: tree-vrp.c:4984 -#, fuzzy, gcc-internal-format -#| msgid "array subscript is above array bounds" +#, gcc-internal-format msgid "array subscript %wu is above array bounds of %qT" -msgstr "l'indice du tableau est au delà des limites du tableau" +msgstr "l'indice du tableau %wu est au delà des limites de %qT" #: tree.c:2005 #, gcc-internal-format @@ -23712,10 +23427,9 @@ msgid "TYPE_ARRAY_MAX_SIZE not INTEGER_CST" msgstr "TYPE_ARRAY_MAX_SIZE pas INTEGER_CST" #: tree.c:13691 -#, fuzzy, gcc-internal-format -#| msgid "TYPE_MAXVAL non-NULL" +#, gcc-internal-format msgid "TYPE_MAX_VALUE_RAW non-NULL" -msgstr "TYPE_MAXVAL non NULL" +msgstr "TYPE_MAX_VALUE_RAW non NULL" #: tree.c:13698 #, gcc-internal-format @@ -23834,22 +23548,19 @@ msgid "variable tracking size limit exceeded" msgstr "la limite de la taille de pistage des variables est dépassée" #: varasm.c:326 -#, fuzzy, gcc-internal-format -#| msgid "%+D causes a section type conflict with %D" +#, gcc-internal-format msgid "%+qD causes a section type conflict with %qD" -msgstr "%+D cause un conflit du type de section avec %D" +msgstr "%+qD cause un conflit du type de section avec %qD" #: varasm.c:329 -#, fuzzy, gcc-internal-format -#| msgid "section type conflict with %D" +#, gcc-internal-format msgid "section type conflict with %qD" -msgstr "conflit du type de section avec %D" +msgstr "conflit du type de section avec %qD" #: varasm.c:334 -#, fuzzy, gcc-internal-format -#| msgid "%+D causes a section type conflict" +#, gcc-internal-format msgid "%+qD causes a section type conflict" -msgstr "%+D cause un conflit du type de section" +msgstr "%+qD cause un conflit du type de section" #: varasm.c:336 #, gcc-internal-format @@ -23914,7 +23625,7 @@ msgstr "nom de registre donné pour la variable non registre %q+D" #: varasm.c:1870 #, gcc-internal-format msgid "Patchable function entry > size" -msgstr "" +msgstr "Entrée de fonction patchable > taille" #: varasm.c:2069 #, gcc-internal-format @@ -23947,10 +23658,9 @@ msgid "invalid initial value for member %qE" msgstr "valeur initiale invalide pour le membre %qE" #: varasm.c:5487 -#, fuzzy, gcc-internal-format -#| msgid "%+D declared weak after being used" +#, gcc-internal-format msgid "%+qD declared weak after being used" -msgstr "%+D déclaré faible après avoir été utilisé" +msgstr "%+qD déclaré faible après avoir été utilisé" #: varasm.c:5539 #, gcc-internal-format @@ -24010,22 +23720,22 @@ msgstr "l'attribut de visibilité n'est pas supporté dans cette configuration; #: vec.c:189 #, gcc-internal-format, gfc-internal-format msgid "qsort comparator not anti-commutative: %d, %d" -msgstr "" +msgstr "le comparateur qsort n'est pas anti-cumulatif: %d, %d" #: vec.c:194 #, gcc-internal-format, gfc-internal-format msgid "qsort comparator non-negative on sorted output: %d" -msgstr "" +msgstr "le comparateur qsort est non-négatif sur une sortie triée: %d" #: vec.c:199 #, gcc-internal-format, gfc-internal-format msgid "qsort comparator not transitive: %d, %d, %d" -msgstr "" +msgstr "le comparateur qsort n'est pas transitif: %d, %d, %d" #: vec.c:201 #, gcc-internal-format msgid "qsort checking failed" -msgstr "" +msgstr "la vérification qsort a échoué" #: vr-values.c:2396 #, gcc-internal-format @@ -24084,10 +23794,9 @@ msgid "%qE attribute ignored for field of type %qT" msgstr "l'attribut %qE est ignoré pour le champ de type %qT" #: c-family/c-attribs.c:698 -#, fuzzy, gcc-internal-format -#| msgid "visibility argument not a string" +#, gcc-internal-format msgid "no_sanitize argument not a string" -msgstr "l'argument de visibilité n'est pas une chaîne" +msgstr "l'argument de no_sanitize n'est pas une chaîne" # %qs est remplacé par un texte non traduit: « hot », « cold », « always_inline ». #: c-family/c-attribs.c:828 ada/gcc-interface/utils.c:6235 @@ -24096,10 +23805,9 @@ msgid "%qE attribute ignored due to conflict with attribute %qs" msgstr "l'attribut %qE est ignoré à cause d'un conflit avec l'attribut %qs" #: c-family/c-attribs.c:877 -#, fuzzy, gcc-internal-format -#| msgid "%qE attribute ignored without -mcmse option." +#, gcc-internal-format msgid "%qE attribute ignored. Use -fcf-protection option to enable it" -msgstr "l'attribut %qE est ignoré sans l'option -mcmse." +msgstr "l'attribut %qE est ignoré. Utilisez l'option -fcf-protection pour l'activer" # %qs est remplacé par un texte non traduit: « noinline », « target_clones », « always_inline », « target ». #: c-family/c-attribs.c:916 c-family/c-attribs.c:922 c-family/c-attribs.c:3382 @@ -24124,10 +23832,9 @@ msgid "%qE attribute only affects top level objects" msgstr "l'attribut %qE affecte uniquement les objets au niveau le plus haut" #: c-family/c-attribs.c:1200 c-family/c-attribs.c:2681 -#, fuzzy, gcc-internal-format -#| msgid "using result of function returning %" +#, gcc-internal-format msgid "%qE attribute on function returning %" -msgstr "utilisation du résultat d'une fonction qui retourne %" +msgstr "attribut %qE sur une fonction retournant %" #: c-family/c-attribs.c:1223 c-family/c-pragma.c:419 #, gcc-internal-format @@ -24256,10 +23963,9 @@ msgid "alignment may not be specified for %q+D" msgstr "l'alignement ne peut pas être spécifié pour %q+D" #: c-family/c-attribs.c:1885 -#, fuzzy, gcc-internal-format -#| msgid "%s attribute of %qs conflicts with %s attribute at %L" +#, gcc-internal-format msgid "ignoring attribute %<%E (%u)%> because it conflicts with attribute %<%E (%u)%>" -msgstr "L'attribut %s de %qs est en conflit avec l'attribut %s à %L" +msgstr "l'attribut %<%E (%u)%> ignoré car il est en conflit avec l'attribut %<%E (%u)%>" #. Do not error out for attribute warn_if_not_aligned. #: c-family/c-attribs.c:1890 c-family/c-attribs.c:1919 @@ -24273,10 +23979,9 @@ msgid "alignment for %q+D was previously specified as %d and may not be decrease msgstr "l'alignement pour %q+D a été précédemment spécifié comme étant %d et ne peut plus être diminué" #: c-family/c-attribs.c:1942 -#, fuzzy, gcc-internal-format -#| msgid "alignment may not be specified for %q+D" +#, gcc-internal-format msgid "% may not be specified for %q+D" -msgstr "l'alignement ne peut pas être spécifié pour %q+D" +msgstr "% ne peut pas être spécifié pour %q+D" #: c-family/c-attribs.c:1985 #, gcc-internal-format @@ -24309,16 +24014,14 @@ msgid "attribute %qE argument not a string" msgstr "l'argument de l'attribut %qE n'est pas une chaîne" #: c-family/c-attribs.c:2105 -#, fuzzy, gcc-internal-format -#| msgid "%+D declared alias after being used" +#, gcc-internal-format msgid "%+qD declared alias after being used" -msgstr "%+D est déclaré comme un alias après avoir été utilisé" +msgstr "%+qD est déclaré comme un alias après avoir été utilisé" #: c-family/c-attribs.c:2107 -#, fuzzy, gcc-internal-format -#| msgid "%+D declared ifunc after being used" +#, gcc-internal-format msgid "%+qD declared ifunc after being used" -msgstr "%+D est déclaré « ifunc » après avoir été utilisé" +msgstr "%+qD est déclaré « ifunc » après avoir été utilisé" #: c-family/c-attribs.c:2158 #, gcc-internal-format @@ -24331,10 +24034,9 @@ msgid "weakref attribute must appear before alias attribute" msgstr "l'attribut « weakref » doit apparaître avant l'attribut « alias »" #: c-family/c-attribs.c:2192 -#, fuzzy, gcc-internal-format -#| msgid "%+D declared weakref after being used" +#, gcc-internal-format msgid "%+qD declared weakref after being used" -msgstr "%+D est déclaré « weakref » après avoir été utilisé" +msgstr "%+qD est déclaré « weakref » après avoir été utilisé" #: c-family/c-attribs.c:2216 #, gcc-internal-format @@ -24498,14 +24200,12 @@ msgid "nonnull argument references non-pointer operand (argument %lu, operand %l msgstr "un argument non nul référence un opérande qui n'est pas un pointeur (argument %lu, opérande %lu)" #: c-family/c-attribs.c:3202 -#, fuzzy, gcc-internal-format -#| msgid "%qE attribute ignored for field of type %qT" +#, gcc-internal-format msgid "%qE attribute ignored on objects of type %qT" -msgstr "l'attribut %qE est ignoré pour le champ de type %qT" +msgstr "l'attribut %qE est ignoré pour l'objet de type %qT" #: c-family/c-attribs.c:3210 -#, fuzzy, gcc-internal-format -#| msgid "%qE attribute doesn't apply to functions" +#, gcc-internal-format msgid "%qE attribute does not apply to functions" msgstr "l'attribut %qE ne s'applique pas aux fonctions" @@ -24540,10 +24240,9 @@ msgid "requested position is less than zero" msgstr "la position demandée est plus petite que zéro" #: c-family/c-attribs.c:3398 -#, fuzzy, gcc-internal-format -#| msgid "value %qs is not supported by attribute %" +#, gcc-internal-format msgid "empty string in attribute %" -msgstr "la valeur %qs n'est pas supportée par l'attribut %" +msgstr "chaîne vide dans l'attribut %" #: c-family/c-attribs.c:3514 #, gcc-internal-format @@ -24596,28 +24295,24 @@ msgid "__builtin_shuffle argument vector(s) inner type must have the same size a msgstr "le type intérieur du/des argument(s) vectoriel(s) de __builtin_shuffle doivent avoir la même taille que le type intérieur du masque" #: c-family/c-common.c:1262 c-family/c-warn.c:1187 -#, fuzzy, gcc-internal-format -#| msgid "conversion from %qT to %qT discards qualifiers" +#, gcc-internal-format msgid "unsigned conversion from %qT to %qT changes value from %qE to %qE" -msgstr "la conversion depuis %qT vers %qT écarte les qualificatifs" +msgstr "la conversion non-signée de %qT vers %qT change la valeur de %qE en %qE" #: c-family/c-common.c:1267 c-family/c-warn.c:1195 -#, fuzzy, gcc-internal-format -#| msgid "conversion from %qT to %qT is ambiguous" +#, gcc-internal-format msgid "unsigned conversion from %qT to %qT changes the value of %qE" -msgstr "la conversion de %qT vers %qT est ambiguë" +msgstr "la conversion non-signée de %qT vers %qT change la valeur de %qE" #: c-family/c-common.c:1276 -#, fuzzy, gcc-internal-format -#| msgid "conversion from %qT to %qT discards qualifiers" +#, gcc-internal-format msgid "signed conversion from %qT to %qT changes value from %qE to %qE" -msgstr "la conversion depuis %qT vers %qT écarte les qualificatifs" +msgstr "la conversion signée de %qT vers %qT change la valeur de %qE en %qE" #: c-family/c-common.c:1281 -#, fuzzy, gcc-internal-format -#| msgid "conversion from %qT to %qT is ambiguous" +#, gcc-internal-format msgid "signed conversion from %qT to %qT changes the value of %qE" -msgstr "la conversion de %qT vers %qT est ambiguë" +msgstr "la conversion signée de %qT vers %qT change la valeur de %qE" #: c-family/c-common.c:1434 c-family/c-common.c:1496 #, gcc-internal-format @@ -24897,10 +24592,9 @@ msgid "too many arguments to function %qE" msgstr "trop d'arguments pour la fonction %qE" #: c-family/c-common.c:5759 -#, fuzzy, gcc-internal-format -#| msgid "third argument to %<__builtin_prefetch%> must be a constant" +#, gcc-internal-format msgid "third argument to function %qE must be a constant integer" -msgstr "le troisième argument de %<__builtin_prefetch%> doit être une constante" +msgstr "le troisième argument de la fonction %qE doit être une constante entière" #: c-family/c-common.c:5784 #, gcc-internal-format @@ -25227,12 +24921,12 @@ msgstr "%s ne supporte pas %s avec le format %<%%%c%> %s" #: c-family/c-format.c:1953 #, gcc-internal-format, gfc-internal-format msgid "%s used within a quoted sequence" -msgstr "" +msgstr "%s utilisé dans une séquence entre guillemets" #: c-family/c-format.c:1966 #, gcc-internal-format msgid "%qc conversion used unquoted" -msgstr "" +msgstr "conversion %qc utilisée sans guillemets" #: c-family/c-format.c:2084 c-family/c-format.c:2415 #, gcc-internal-format, gfc-internal-format @@ -25340,30 +25034,29 @@ msgid "conversion lacks type at end of format" msgstr "il manque le type dans la conversion à la fin du format" #: c-family/c-format.c:2891 -#, fuzzy, gcc-internal-format -#| msgid "Process #ident directives." +#, gcc-internal-format msgid "nested quoting directive" -msgstr "Traiter les directives #ident." +msgstr "directive imbriquée de mise entre guillemets" #: c-family/c-format.c:2902 #, gcc-internal-format msgid "unmatched quoting directive" -msgstr "" +msgstr "directive de mise entre guillemets non concordante" #: c-family/c-format.c:2917 #, gcc-internal-format msgid "%qc directive redundant after prior occurence of the same" -msgstr "" +msgstr "directive %qc redondante après une occurrence précédente du même" #: c-family/c-format.c:2923 #, gcc-internal-format msgid "unmatched color reset directive" -msgstr "" +msgstr "directive de réinitialisation de couleur sans concordante" #: c-family/c-format.c:2935 #, gcc-internal-format msgid "%qc conversion used within a quoted sequence" -msgstr "" +msgstr "conversion %qc utilisée dans une séquence entre guillemets" #: c-family/c-format.c:2975 #, gcc-internal-format @@ -25371,16 +25064,14 @@ msgid "embedded %<\\0%> in format" msgstr "%<\\0%> inclus à l'intérieur du format" #: c-family/c-format.c:2988 -#, fuzzy, gcc-internal-format -#| msgid "unterminated format string" +#, gcc-internal-format msgid "unterminated quoting directive" -msgstr "chaîne de format non terminée" +msgstr "directive de mise entre guillemets non terminée" #: c-family/c-format.c:2992 -#, fuzzy, gcc-internal-format -#| msgid "unterminated assembly dialect alternative" +#, gcc-internal-format msgid "unterminated color directive" -msgstr "alternative non terminée de dialecte assembleur" +msgstr "directive de couleur non terminée" #: c-family/c-format.c:3114 #, gcc-internal-format, gfc-internal-format @@ -25453,10 +25144,9 @@ msgid "% is not defined as a pointer type" msgstr "% n'est pas défini comme un type pointeur" #: c-family/c-format.c:3876 -#, fuzzy, gcc-internal-format -#| msgid "% is not defined as a type" +#, gcc-internal-format msgid "% is not defined as a type" -msgstr "% n'est pas défini comme un type" +msgstr "% n'est pas défini comme un type" #: c-family/c-format.c:4087 #, gcc-internal-format @@ -25911,10 +25601,9 @@ msgid "%<#pragma weak%> declaration of %q+D not allowed, ignored" msgstr "la déclaration %<#pragma weak%> de %q+D n'est pas permise, ignoré" #: c-family/c-pragma.c:428 -#, fuzzy, gcc-internal-format -#| msgid "scalar_storage_order is not supported" +#, gcc-internal-format msgid "%<#pragma scalar_storage_order%> is not supported for C++" -msgstr "scalar_storage_order n'est pas supporté" +msgstr "%<#pragma scalar_storage_order%> n'est pas supporté pour le C++" #: c-family/c-pragma.c:434 #, gcc-internal-format @@ -26178,76 +25867,64 @@ msgid "overflow in constant expression" msgstr "débordement dans l'expression constante" #: c-family/c-warn.c:93 -#, fuzzy, gcc-internal-format -#| msgid "integer overflow in expression" +#, gcc-internal-format msgid "integer overflow in expression %qE of type %qT results in %qE" -msgstr "débordement d'entier dans l'expression" +msgstr "débordement d'entier dans l'expression %qE de type %qT résulte en %qE" #: c-family/c-warn.c:95 -#, fuzzy, gcc-internal-format -#| msgid "integer overflow in expression" +#, gcc-internal-format msgid "integer overflow in expression of type %qT results in %qE" -msgstr "débordement d'entier dans l'expression" +msgstr "débordement d'entier dans l'expression de type %qT résulte en %qE" #: c-family/c-warn.c:101 -#, fuzzy, gcc-internal-format -#| msgid "floating point overflow in expression" +#, gcc-internal-format msgid "floating point overflow in expression %qE of type %qT results in %qE" -msgstr "débordement d'un nombre en virgule flottante dans l'expression" +msgstr "débordement d'un nombre en virgule flottante dans l'expression %qE de type %qT résulte en %qE" #: c-family/c-warn.c:103 -#, fuzzy, gcc-internal-format -#| msgid "floating point overflow in expression" +#, gcc-internal-format msgid "floating point overflow in expression of type %qT results in %qE" -msgstr "débordement d'un nombre en virgule flottante dans l'expression" +msgstr "débordement d'un nombre en virgule flottante dans l'expression de type %qT résulte en %qE" #: c-family/c-warn.c:109 -#, fuzzy, gcc-internal-format -#| msgid "fixed-point overflow in expression" +#, gcc-internal-format msgid "fixed-point overflow in expression %qE of type %qT results in %qE" -msgstr "débordement d'un nombre en virgule fixe dans l'expression" +msgstr "débordement d'un nombre en virgule fixe dans l'expression %qE de type %qT résulte in %qE" #: c-family/c-warn.c:111 -#, fuzzy, gcc-internal-format -#| msgid "fixed-point overflow in expression" +#, gcc-internal-format msgid "fixed-point overflow in expression of type %qT results in %qE" -msgstr "débordement d'un nombre en virgule fixe dans l'expression" +msgstr "débordement d'un nombre en virgule fixe dans l'expression de type %qT résulte en %qE" #: c-family/c-warn.c:117 -#, fuzzy, gcc-internal-format -#| msgid "vector overflow in expression" +#, gcc-internal-format msgid "vector overflow in expression %qE of type %qT results in %qE" -msgstr "débordement du vecteur dans l'expression" +msgstr "débordement du vecteur dans l'expression %qE de type %qT résulte en %qE" #: c-family/c-warn.c:119 -#, fuzzy, gcc-internal-format -#| msgid "vector overflow in expression" +#, gcc-internal-format msgid "vector overflow in expression of type %qT results in %qE" -msgstr "débordement du vecteur dans l'expression" +msgstr "débordement du vecteur dans l'expression de type %qT résulte en %qE" #: c-family/c-warn.c:126 -#, fuzzy, gcc-internal-format -#| msgid "complex integer overflow in expression" +#, gcc-internal-format msgid "complex integer overflow in expression %qE of type %qT results in %qE" -msgstr "débordement d'un entier complexe dans l'expression" +msgstr "débordement d'un entier complexe dans l'expression %qE de type %qT résulte en %qE" #: c-family/c-warn.c:128 -#, fuzzy, gcc-internal-format -#| msgid "complex integer overflow in expression" +#, gcc-internal-format msgid "complex integer overflow in expression of type %qT results in %qE" -msgstr "débordement d'un entier complexe dans l'expression" +msgstr "débordement d'un entier complexe dans l'expression de type %qT résulte en %qE" #: c-family/c-warn.c:132 -#, fuzzy, gcc-internal-format -#| msgid "complex floating point overflow in expression" +#, gcc-internal-format msgid "complex floating point overflow in expression %qE of type %qT results in %qE" -msgstr "débordement d'un nombre en virgule flottante complexe dans l'expression" +msgstr "débordement d'un nombre en virgule flottante complexe dans l'expression %qE de type %qT résulte en %qE" #: c-family/c-warn.c:134 -#, fuzzy, gcc-internal-format -#| msgid "complex floating point overflow in expression" +#, gcc-internal-format msgid "complex floating point overflow in expression of type %qT results in %qE" -msgstr "débordement d'un nombre en virgule flottante complexe dans l'expression" +msgstr "débordement d'un nombre en virgule flottante complexe dans l'expression de type %qT résulte en %qE" #: c-family/c-warn.c:216 #, gcc-internal-format @@ -26280,16 +25957,14 @@ msgid "logical % of equal expressions" msgstr "% logique d'expressions égales" #: c-family/c-warn.c:384 -#, fuzzy, gcc-internal-format -#| msgid "self-comparison always evaluates to false" +#, gcc-internal-format msgid "bitwise comparison always evaluates to false" -msgstr "la comparaison avec soi-même retourne toujours faux" +msgstr "la comparaison au niveau du bit est toujours évaluée à faux" #: c-family/c-warn.c:387 -#, fuzzy, gcc-internal-format -#| msgid "self-comparison always evaluates to true" +#, gcc-internal-format msgid "bitwise comparison always evaluates to true" -msgstr "la comparaison avec soi-même retourne toujours vrai" +msgstr "la comparaison au niveau du bit est toujours évaluée à vrai" #: c-family/c-warn.c:441 #, gcc-internal-format @@ -26327,10 +26002,9 @@ msgid "dereferencing type-punned pointer might break strict-aliasing rules" msgstr "le déréférencement d'un pointeur transtypé à la barbare pourrait enfreindre la règle selon laquelle une zone mémoire ne peut être accédée que par un seul pointeur (strict aliasing)" #: c-family/c-warn.c:795 -#, fuzzy, gcc-internal-format -#| msgid "argument to % in %qD call is the same expression as the source; did you mean to remove the addressof?" +#, gcc-internal-format msgid "argument to % in %qD call is the same expression as the source; did you mean to use the size of the destination?" -msgstr "l'argument de % dans l'appel à %qD est la même expression que la source; avez-vous oublié de retirer « addressof » ?" +msgstr "l'argument de % dans l'appel à %qD est la même expression que la source; ne vouliez-vous pas utiliser la taille de la destination ?" #: c-family/c-warn.c:826 #, gcc-internal-format @@ -26448,40 +26122,34 @@ msgid "conversion to %qT from boolean expression" msgstr "conversion d'une expression booléenne vers %qT" #: c-family/c-warn.c:1109 c-family/c-warn.c:1185 -#, fuzzy, gcc-internal-format -#| msgid "conversion from %qT to %qT discards qualifiers" +#, gcc-internal-format msgid "conversion from %qT to %qT changes value from %qE to %qE" -msgstr "la conversion depuis %qT vers %qT écarte les qualificatifs" +msgstr "la conversion depuis %qT vers %qT change la valeur de %qE en %qE" #: c-family/c-warn.c:1113 c-family/c-warn.c:1193 -#, fuzzy, gcc-internal-format -#| msgid "conversion from %qT to %qT is ambiguous" +#, gcc-internal-format msgid "conversion from %qT to %qT changes the value of %qE" -msgstr "la conversion de %qT vers %qT est ambiguë" +msgstr "la conversion de %qT vers %qT change la valeur de %qE" #: c-family/c-warn.c:1133 -#, fuzzy, gcc-internal-format -#| msgid "conversion to %qT from %qT discards imaginary component" +#, gcc-internal-format msgid "conversion from %qT to to %qT discards imaginary component" -msgstr "la conversion vers %qT depuis %qT abandonne la partir imaginaire" +msgstr "la conversion de %qT vers %qT abandonne la partir imaginaire" #: c-family/c-warn.c:1146 -#, fuzzy, gcc-internal-format -#| msgid "conversion to %qT from %qT may alter its value" +#, gcc-internal-format msgid "conversion from %qT to %qT may change value" -msgstr "la conversion vers %qT depuis %qT peut altérer sa valeur" +msgstr "la conversion de %qT vers %qT peut changer la valeur" #: c-family/c-warn.c:1206 c-family/c-warn.c:1223 c-family/c-warn.c:1240 -#, fuzzy, gcc-internal-format -#| msgid "implicit conversion from %qT to %qT when passing argument to function" +#, gcc-internal-format msgid "overflow in conversion from %qT to %qT changes value from %qE to %qE" -msgstr "conversion implicite de %qT en %qT lors du passage de l'argument à la fonction" +msgstr "le débordement dans la conversion de %qT vers %qT change la valeur de %qE en %qE" #: c-family/c-warn.c:1211 c-family/c-warn.c:1228 c-family/c-warn.c:1245 -#, fuzzy, gcc-internal-format -#| msgid "narrowing conversion of %qE from %qT to %qT inside { }" +#, gcc-internal-format msgid "overflow in conversion from %qT to %qT changes the value of %qE" -msgstr "conversion réductrice de %qE depuis %qT vers %qT à l'intérieur de { }" +msgstr "le débordement dans la conversion de %qT vers %qT change la valeur en %qE" #: c-family/c-warn.c:1275 #, gcc-internal-format @@ -26832,7 +26500,7 @@ msgstr "comparaison entre les types %qT et %qT" #: c-family/c-warn.c:1988 #, gcc-internal-format msgid "comparison of integer expressions of different signedness: %qT and %qT" -msgstr "" +msgstr "comparaison d'expressions entières de types signés différents: %qT et %qT" #: c-family/c-warn.c:2041 #, gcc-internal-format @@ -26870,16 +26538,14 @@ msgid "optimization attribute on %qD follows definition but the attribute doesn% msgstr "l'attribut d'optimisation sur %qD suit la définition mais l'attribut ne correspond pas" #: c-family/c-warn.c:2244 -#, fuzzy, gcc-internal-format -#| msgid "inline declaration of %qD follows declaration with attribute noinline" +#, gcc-internal-format msgid "inline declaration of %qD follows declaration with attribute %qs" -msgstr "la déclaration en ligne de %qD suit la déclaration avec l'attribut « noinline »" +msgstr "la déclaration en ligne de %qD suit la déclaration avec l'attribut %qs" #: c-family/c-warn.c:2249 -#, fuzzy, gcc-internal-format -#| msgid "declaration of %q+D with attribute noinline follows inline declaration " +#, gcc-internal-format msgid "declaration of %q+D with attribute %qs follows inline declaration " -msgstr "la déclaration de %q+D avec l'attribut « noinline » suit la déclaration « inline »" +msgstr "la déclaration de %q+D avec l'attribut %qs suit la déclaration « inline »" #: c-family/c-warn.c:2296 #, gcc-internal-format @@ -26910,12 +26576,12 @@ msgstr "cette condition a des branches identiques" #: c-family/c-warn.c:2575 #, gcc-internal-format msgid "macro expands to multiple statements" -msgstr "" +msgstr "la macro s'étend en des instructions multiples" #: c-family/c-warn.c:2576 #, gcc-internal-format msgid "some parts of macro expansion are not guarded by this %qs clause" -msgstr "" +msgstr "certaines parties de l'expansion de la macro ne sont pas protégées par cette instruction %qs" #: c-family/cppspec.c:93 #, gcc-internal-format @@ -26950,12 +26616,12 @@ msgstr "Valeur non supportée pour mmpy-option" #: common/config/arm/arm-common.c:259 #, gcc-internal-format, gfc-internal-format msgid "%%:target_mode_check takes an even number of parameters" -msgstr "" +msgstr "%%:target_mode_check prend un nombre paire de paramètres" #: common/config/arm/arm-common.c:269 #, gcc-internal-format, gfc-internal-format msgid "unrecognized option passed to %%:target_mode_check" -msgstr "" +msgstr "option non reconnue passée à %%:target_mode_check" #: common/config/arm/arm-common.c:315 common/config/arm/arm-common.c:359 #: common/config/arm/arm-common.c:402 config/aarch64/aarch64.c:10497 @@ -26965,63 +26631,54 @@ msgstr "les arguments valides sont: %s; vouliez-vous utiliser %qs ?" #: common/config/arm/arm-common.c:318 common/config/arm/arm-common.c:362 #: common/config/arm/arm-common.c:405 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "valid arguments to %qs are: %s" +#, gcc-internal-format, gfc-internal-format msgid "valid arguments are: %s" -msgstr "les arguments valables pour %qs sont: %s" +msgstr "les arguments valables sont: %s" #: common/config/arm/arm-common.c:342 common/config/arm/arm-common.c:386 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "unrecognized edge flag: '%s'" +#, gcc-internal-format, gfc-internal-format msgid "unrecognized %s target: %s" -msgstr "fanion d'arête non reconnu: « %s »" +msgstr "cible %s non reconnue: %s" #: common/config/arm/arm-common.c:421 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "unrecognized enum value: '%s'" +#, gcc-internal-format, gfc-internal-format msgid "unrecognized -mfpu target: %s" -msgstr "valeur d'énumération non reconnue: « %s »" +msgstr "cible -mfpu non reconnue: %s" #: common/config/arm/arm-common.c:449 -#, fuzzy, gcc-internal-format -#| msgid "%s does not support %s" +#, gcc-internal-format msgid "%qs does not support feature %qs" -msgstr "%s ne supporte pas %s" +msgstr "%qs ne supporte pas la fonctionnalité %qs" #: common/config/arm/arm-common.c:460 -#, fuzzy, gcc-internal-format -#| msgid "valid arguments are: %s; did you mean %qs?" +#, gcc-internal-format msgid "valid feature names are: %s; did you mean %qs?" -msgstr "les arguments valides sont: %s; vouliez-vous utiliser %qs ?" +msgstr "les noms de fonctionnalités valides sont: %s; vouliez-vous utiliser %qs ?" #: common/config/arm/arm-common.c:463 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "invalid feature modifier in target %s %qs" +#, gcc-internal-format, gfc-internal-format msgid "valid feature names are: %s" -msgstr "modificateur de fonctionnalité invalide dans la cible %s %qs" +msgstr "les noms de fonctionnalités valables sont: %s" #: common/config/arm/arm-common.c:481 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "%qD does not name an enumeration in %qT" +#, gcc-internal-format, gfc-internal-format msgid "%s does not take any feature options" -msgstr "%qD ne nomme pas une énumération dans %qT" +msgstr "%s ne prend aucune option de fonctionnalité" #: common/config/arm/arm-common.c:572 #, gcc-internal-format, gfc-internal-format msgid "%%:canon_for_mlib takes 1 or more pairs of parameters" -msgstr "" +msgstr "%%:canon_for_mlib prend une ou plusieurs paires de paramètres" #: common/config/arm/arm-common.c:586 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "unrecognized option -fdisable" +#, gcc-internal-format, gfc-internal-format msgid "unrecognized operand to %%:canon_for_mlib" -msgstr "option -fdisable non reconnue" +msgstr "opérande non reconnu pour %%:canon_for_mlib" #: common/config/arm/arm-common.c:932 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "unrecognized command line option %qs" +#, gcc-internal-format, gfc-internal-format msgid "unrecognized operand to %%:asm_auto_mfpu" -msgstr "option %qs non reconnue sur la ligne de commande" +msgstr "opérande non reconnu pour %%:asm_auto_mfpu" #: common/config/bfin/bfin-common.c:304 common/config/m68k/m68k-common.c:60 #, gcc-internal-format, gfc-internal-format @@ -27376,10 +27033,9 @@ msgid "invalid alignment for %<#pragma align%>, ignoring" msgstr "alignement invalide pour %<#pragma align%>, ignoré" #: config/sol2-c.c:115 -#, fuzzy, gcc-internal-format -#| msgid "%<#pragma align%> must appear before the declaration of %D, ignoring" +#, gcc-internal-format msgid "%<#pragma align%> must appear before the declaration of %qD, ignoring" -msgstr "%<#pragma align%> doit apparaître avant la déclaration de %D, ignoré" +msgstr "%<#pragma align%> doit apparaître avant la déclaration de %qD, ignoré" #: config/sol2-c.c:127 config/sol2-c.c:139 #, gcc-internal-format @@ -27475,7 +27131,7 @@ msgstr "le modificateur de fonctionnalité %qs est incompatible avec %s %s" #: config/aarch64/aarch64.c:3654 #, gcc-internal-format msgid "stack probes for SVE frames" -msgstr "" +msgstr "sondes de pile pour les trames SVE" #: config/aarch64/aarch64.c:10152 #, gcc-internal-format, gfc-internal-format @@ -27538,16 +27194,14 @@ msgid "switch -mcpu=%s conflicts with -march=%s switch" msgstr "l'option -mcpu=%s est en conflit avec l'option -march=%s" #: config/aarch64/aarch64.c:10761 -#, fuzzy, gcc-internal-format -#| msgid "Assembler does not support -mabi=ilp32" +#, gcc-internal-format msgid "assembler does not support -mabi=ilp32" -msgstr "L'assembleur ne supporte pas -mabi=ilp32" +msgstr "l'assembleur ne supporte pas -mabi=ilp32" #: config/aarch64/aarch64.c:10768 -#, fuzzy, gcc-internal-format -#| msgid "Return address signing is only supported for -mabi=lp64" +#, gcc-internal-format msgid "return address signing is only supported for -mabi=lp64" -msgstr "La signature de l'adresse de retour n'est supportée qu'avec -mabi=lp64" +msgstr "la signature de l'adresse de retour n'est supportée qu'avec -mabi=lp64" #: config/aarch64/aarch64.c:10830 #, gcc-internal-format @@ -27555,71 +27209,60 @@ msgid "code model %qs with -f%s" msgstr "modèle de code %qs avec -f%s" #: config/aarch64/aarch64.c:10993 -#, fuzzy, gcc-internal-format -#| msgid "bad value (%qs) for % attribute" +#, gcc-internal-format msgid "missing name in % pragma or attribute" -msgstr "valeur erronée (%qs) pour l'attribut %" +msgstr "nom manquant dans le pragma ou l'attribut %" #: config/aarch64/aarch64.c:10996 -#, fuzzy, gcc-internal-format -#| msgid "bad value (%qs) for % attribute" +#, gcc-internal-format msgid "invalid name (\"%s\") in % pragma or attribute" -msgstr "valeur erronée (%qs) pour l'attribut %" +msgstr "nom invalide (« %s ») dans le pragma ou l'attribut %" #: config/aarch64/aarch64.c:11000 config/aarch64/aarch64.c:11039 #: config/aarch64/aarch64.c:11112 -#, fuzzy, gcc-internal-format -#| msgid "bad value (%qs) for % attribute" +#, gcc-internal-format msgid "invalid value (\"%s\") in % pragma or attribute" -msgstr "valeur erronée (%qs) pour l'attribut %" +msgstr "valeur invalide (« %s ») dans le pragma ou l'attribut %" #: config/aarch64/aarch64.c:11032 -#, fuzzy, gcc-internal-format -#| msgid "bad value (%qs) for % attribute" +#, gcc-internal-format msgid "missing name in % pragma or attribute" -msgstr "valeur erronée (%qs) pour l'attribut %" +msgstr "nom manquant dans le pragma ou l'attribut %" #: config/aarch64/aarch64.c:11035 -#, fuzzy, gcc-internal-format -#| msgid "bad value (%qs) for % attribute" +#, gcc-internal-format msgid "invalid name (\"%s\") in % pragma or attribute" -msgstr "valeur erronée (%qs) pour l'attribut %" +msgstr "nom invalide (« %s ») dans le pragma ou l'attribut %" #: config/aarch64/aarch64.c:11068 -#, fuzzy, gcc-internal-format -#| msgid "bad value (%qs) for % attribute" +#, gcc-internal-format msgid "invalid name (\"%s\") in % pragma or attribute" -msgstr "valeur erronée (%qs) pour l'attribut %" +msgstr "nom invalide (« %s ») dans le pragma ou l'attribut %" #: config/aarch64/aarch64.c:11108 -#, fuzzy, gcc-internal-format -#| msgid "missing %<=%> (after % attribute)" +#, gcc-internal-format msgid "missing value in % pragma or attribute" -msgstr "%<=%> manquant (après l'attribut %)" +msgstr "valeur manquante dans le pragma ou l'attribut %" #: config/aarch64/aarch64.c:11161 config/aarch64/aarch64.c:11338 -#, fuzzy, gcc-internal-format -#| msgid "malformed target %s value" +#, gcc-internal-format msgid "malformed % pragma or attribute" -msgstr "la valeur cible de %s est mal composée" +msgstr "le pragma ou l'attribut % est mal composé" #: config/aarch64/aarch64.c:11209 -#, fuzzy, gcc-internal-format -#| msgid "target %s %qs does not accept an argument" +#, gcc-internal-format msgid "pragma or attribute % does not accept an argument" -msgstr "la cible %s %qs n'accepte pas d'argument" +msgstr "le pragma ou l'attribut % n'accepte pas d'argument" #: config/aarch64/aarch64.c:11217 -#, fuzzy, gcc-internal-format -#| msgid "target %s %qs does not allow a negated form" +#, gcc-internal-format msgid "pragma or attribute % does not allow a negated form" -msgstr "la cible %s %qs n'autorise pas de forme négative" +msgstr "le pragma ou l'attribut % n'autorise pas de forme négative" #: config/aarch64/aarch64.c:11271 -#, fuzzy, gcc-internal-format -#| msgid "attribute(target(\"%s\")) is unknown" +#, gcc-internal-format msgid "pragma or attribute % is not valid" -msgstr "attribute(target(\"%s\")) est inconnu" +msgstr "le pragma ou l'attribut % n'est pas valide" #: config/aarch64/aarch64.c:11328 config/arm/arm.c:30726 #: config/i386/i386.c:5412 config/powerpcspe/powerpcspe.c:39759 @@ -27629,16 +27272,14 @@ msgid "attribute % argument not a string" msgstr "l'argument % de l'attribut n'est pas une chaîne" #: config/aarch64/aarch64.c:11355 -#, fuzzy, gcc-internal-format -#| msgid "attribute(target(\"%s\")) is unknown" +#, gcc-internal-format msgid "pragma or attribute % is not valid" -msgstr "attribute(target(\"%s\")) est inconnu" +msgstr "le pragma ou l'attribut % n'est pas valide" #: config/aarch64/aarch64.c:11364 -#, fuzzy, gcc-internal-format -#| msgid "bad value (%qs) for % attribute" +#, gcc-internal-format msgid "malformed % pragma or attribute" -msgstr "valeur erronée (%qs) pour l'attribut %" +msgstr "le pragma ou l'attribut % est mal composé" #: config/aarch64/aarch64.c:13422 #, gcc-internal-format @@ -27743,22 +27384,19 @@ msgid "PIC is not supported for %s. Generating non-PIC code only.." msgstr "PIC n'est pas supporté pour %s. Seul du code non PIC sera généré." #: config/arc/arc.c:965 -#, fuzzy, gcc-internal-format -#| msgid "value of -mfixed-range must have form REG1-REG2" +#, gcc-internal-format msgid "value of -mirq-ctrl-saved must have form R0-REGx" -msgstr "la valeur de -mfixed-range doit avoir la forme REG1-REG2" +msgstr "la valeur de -mirq-ctrl-saved doit avoir la forme R0-REGx" #: config/arc/arc.c:977 -#, fuzzy, gcc-internal-format -#| msgid "first argument must be []byte" +#, gcc-internal-format msgid "first register must be R0" -msgstr "le premier argument doit être []byte" +msgstr "le premier argument doit être R0" #: config/arc/arc.c:996 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "Cray pointer at %C must be an integer" +#, gcc-internal-format, gfc-internal-format msgid "last register name %s must be an odd register" -msgstr "Le pointeur Cray à %C doit être un entier" +msgstr "le dernier nom de registre %s doit être un registre impair" #: config/arc/arc.c:1004 config/ia64/ia64.c:6054 config/pa/pa.c:483 #: config/sh/sh.c:8288 config/spu/spu.c:4941 @@ -27769,17 +27407,17 @@ msgstr "%s-%s est une plage vide" #: config/arc/arc.c:1053 #, gcc-internal-format, gfc-internal-format msgid "invalid number in -mrgf-banked-regs=%s valid values are 0, 4, 8, 16, or 32" -msgstr "" +msgstr "nombre invalide dans -mrgf-banked-regs=%s les valeurs valables sont 0, 4, 8, 16 ou 32" #: config/arc/arc.c:1114 #, gcc-internal-format msgid "option -mirq-ctrl-saved valid only for ARC v2 processors" -msgstr "" +msgstr "l'option -mirq-ctrl-saved est uniquement valable pour les processeurs ARC v2" #: config/arc/arc.c:1121 #, gcc-internal-format msgid "option -mrgf-banked-regs valid only for ARC v2 processors" -msgstr "" +msgstr "l'option -mrgf-banked-regs est uniquement valable pour les processeur ARC v2" #. Check options against architecture options. Throw an error if #. option is not allowed. @@ -27810,10 +27448,9 @@ msgid "argument of %qE attribute is not \"ilink1\" or \"ilink2\"" msgstr "l'argument de l'attribut %qE n'est pas « ilink1 » ni « ilink2 »" #: config/arc/arc.c:2025 -#, fuzzy, gcc-internal-format -#| msgid "argument of %qE attribute is not \"ilink1\" or \"ilink2\"" +#, gcc-internal-format msgid "argument of %qE attribute is not \"ilink\" or \"firq\"" -msgstr "l'argument de l'attribut %qE n'est pas « ilink1 » ni « ilink2 »" +msgstr "l'argument de l'attribut %qE n'est pas « ilink » ni « firq »" #: config/arc/arc.c:2039 config/arm/arm.c:6832 config/arm/arm.c:6850 #: config/arm/arm.c:7025 config/avr/avr.c:9726 config/avr/avr.c:9742 @@ -27938,16 +27575,14 @@ msgid "insn addresses not freed" msgstr "les adresses des insn ne sont pas libérées" #: config/arc/arc.c:11049 -#, fuzzy, gcc-internal-format -#| msgid "%qE attribute only available for 32-bit" +#, gcc-internal-format msgid "%qE attribute only valid for ARCv2 architecture" -msgstr "l'attribut %qE est uniquement disponible en 32 bits" +msgstr "l'attribut %qE est uniquement valable pour l'architecture ARCv2" #: config/arc/arc.c:11057 config/arc/arc.c:11096 -#, fuzzy, gcc-internal-format -#| msgid "argument of %qE attribute is not \"ilink\"" +#, gcc-internal-format msgid "argument of %qE attribute is missing" -msgstr "l'argument de l'attribut %qE n'est pas « ilink »" +msgstr "l'argument de l'attribut %qE est manquant" #: config/arc/arc.c:11068 config/arc/arc.c:11107 config/avr/avr.c:9798 #, gcc-internal-format @@ -27955,10 +27590,9 @@ msgid "%qE attribute allows only an integer constant argument" msgstr "l'attribut %qE n'accepte qu'une constante entière comme argument" #: config/arc/arc.c:11088 -#, fuzzy, gcc-internal-format -#| msgid "%qE attribute is only valid on % type" +#, gcc-internal-format msgid "%qE attribute only valid for ARC EM architecture" -msgstr "l'attribut %qE est uniquement valable sur un type %" +msgstr "l'attribut %qE est uniquement valable pour l'architecture ARC EM" #: config/arm/arm-builtins.c:2370 #, gcc-internal-format @@ -28173,10 +27807,9 @@ msgid "RTP PIC is incompatible with Thumb" msgstr "RTP PIC est incompatible avec Thumb" #: config/arm/arm.c:2902 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "-mpure-code only supports non-pic code on armv7-m targets" +#, gcc-internal-format, gfc-internal-format msgid "%s only supports non-pic code on M-profile targets with the MOVT instruction" -msgstr "-mpure-code ne supporte que du code non pic sur les cibles armv7-m" +msgstr "%s ne supporte que du code non pic sur les cibles M-profile avec l'instruction MOVT" #: config/arm/arm.c:3012 #, gcc-internal-format @@ -28206,7 +27839,7 @@ msgstr "Le code réentrant APCS n'est pas supporté. Ignoré" #: config/arm/arm.c:3438 #, gcc-internal-format msgid "option %<-mstructure-size-boundary%> is deprecated" -msgstr "" +msgstr "l'option %<-mstructure-size-boundary%> est dépréciée" #: config/arm/arm.c:3446 #, gcc-internal-format @@ -28281,7 +27914,7 @@ msgstr "le processeur cible ne supporte pas les extensions de sécurité ARMv8-M #: config/arm/arm.c:3745 #, gcc-internal-format msgid "ARMv8-M Security Extensions incompatible with selected FPU" -msgstr "" +msgstr "Les extensions de sécurité ARMv8-M sont incompatibles avec le FPU sélectionné" #: config/arm/arm.c:3756 #, gcc-internal-format @@ -28390,10 +28023,9 @@ msgid "-fstack-check=specific for Thumb-1" msgstr "-fstack-check=specific pour Thumb-1" #: config/arm/arm.c:30750 -#, fuzzy, gcc-internal-format -#| msgid "invalid fpu for attribute(target(\"%s\"))" +#, gcc-internal-format msgid "invalid fpu for target attribute or pragma %qs" -msgstr "fpu invalide pour attribute(target(\"%s\"))" +msgstr "fpu invalide pour l'attribut ou le pragma cible %qs" #. This doesn't really make sense until we support #. general dynamic selection of the architecture and all @@ -28404,16 +28036,14 @@ msgid "auto fpu selection not currently permitted here" msgstr "la sélection automatique du fpu n'est actuellement pas permise ici" #: config/arm/arm.c:30771 -#, fuzzy, gcc-internal-format -#| msgid "invalid vector type for attribute %qE" +#, gcc-internal-format msgid "invalid architecture for target attribute or pragma %qs" -msgstr "type de vecteur invalide pour l'attribut %qE" +msgstr "architecture invalide pour l'attribut ou le pragma cible %qs" #: config/arm/arm.c:30785 -#, fuzzy, gcc-internal-format -#| msgid "target attribute or pragma changes SPE ABI" +#, gcc-internal-format msgid "unknown target attribute or pragma %qs" -msgstr "l'attribut cible ou le pragma change l'ABI SPE" +msgstr "attribut ou pragma cible %qs inconnu" #: config/arm/freebsd.h:121 #, gcc-internal-format @@ -28490,10 +28120,9 @@ msgid "-fPIE is not supported" msgstr "-fPIE n'est pas supporté" #: config/avr/avr.c:1055 config/avr/avr.c:1060 -#, fuzzy, gcc-internal-format -#| msgid "function attributes %qs, %qs and %qs are mutually exclusive" +#, gcc-internal-format msgid "function attributes %qs and %qs are mutually exclusive" -msgstr "les attributs de fonction %qs, %qs et %qs sont mutuellement exclusifs" +msgstr "les attributs de fonction %qs et %qs sont mutuellement exclusifs" #: config/avr/avr.c:1081 #, gcc-internal-format @@ -28512,8 +28141,7 @@ msgid "%qs appears to be a misspelled %qs handler, missing %<__vector%> prefix" msgstr "%qs semble être un gestionnaire avec l'attribut %qs mal orthographié, il manque le préfixe %<__vector%>" #: config/avr/avr.c:1111 -#, fuzzy, gcc-internal-format -#| msgid "%qs is a reserved indentifier in AVR-LibC. Consider %<#include %> before using the %qs macro" +#, gcc-internal-format msgid "%qs is a reserved identifier in AVR-LibC. Consider %<#include %> before using the %qs macro" msgstr "%qs est un identificateur réservé de AVR-LibC. Envisagez %<#include %> avant d'utiliser la macro %qs" @@ -29086,10 +28714,9 @@ msgid "too many size ranges specified in option %qs" msgstr "trop de plages de tailles spécifiées dans l'option %qs" #: config/i386/i386.c:3304 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "Unknown parameter to option -mtune-ctrl: %s" +#, gcc-internal-format, gfc-internal-format msgid "unknown parameter to option -mtune-ctrl: %s" -msgstr "Paramètre inconnu dans l'option -mtune-ctrl: %s" +msgstr "paramètre inconnu dans l'option -mtune-ctrl: %s" #: config/i386/i386.c:3715 #, gcc-internal-format @@ -29118,10 +28745,9 @@ msgid "address mode %qs not supported in the %s bit mode" msgstr "le mode d'adresse %qs n'est pas supporté en mode %s bits" #: config/i386/i386.c:3822 -#, fuzzy, gcc-internal-format -#| msgid "%<-Wabi=1%> is not supported, using =2" +#, gcc-internal-format msgid "-mabi=ms not supported with X32 ABI" -msgstr "%<-Wabi=1%> n'est pas supporté, on utilise =2" +msgstr "-mabi=ms pas supporté avec l'ABI X32" #: config/i386/i386.c:3840 config/i386/i386.c:3849 config/i386/i386.c:3861 #: config/i386/i386.c:3872 config/i386/i386.c:3883 @@ -29342,7 +28968,7 @@ msgstr "-mno-fentry n'est pas compatible avec SEH (gestionnaire d'exceptions str #: config/i386/i386.c:4696 #, gcc-internal-format msgid "-mcall-ms2sysv-xlogues isn%'t currently supported with SEH" -msgstr "" +msgstr "-mcall-ms2sysv-xlogues n'est actuellement pas supporté avec SEH" #: config/i386/i386.c:4761 config/powerpcspe/powerpcspe.c:5663 #, gcc-internal-format, gfc-internal-format @@ -29365,22 +28991,19 @@ msgid "%qs is not a valid base register in -mstack-protector-guard-reg=" msgstr "%qs n'est pas un registre de base valable dans -mstack-protector-guard-reg=" #: config/i386/i386.c:4891 -#, fuzzy, gcc-internal-format -#| msgid "Pointer Checker requires MPX support on this target. Use -mmpx options to enable MPX." +#, gcc-internal-format msgid "%<-fcf-protection=full%> requires CET support on this target. Use -mcet or one of -mibt, -mshstk options to enable CET" -msgstr "Le contrôleur de pointeurs requiert le support MPX sur cette cible. Utilisez les options -mmpx pour activer MPX." +msgstr "%<-fcf-protection=full%> requiert le support CET sur cette cible. Utilisez -mcet ou une des options -mibt ou -mshstk pour activer CET" #: config/i386/i386.c:4897 -#, fuzzy, gcc-internal-format -#| msgid "Pointer Checker requires MPX support on this target. Use -mmpx options to enable MPX." +#, gcc-internal-format msgid "%<-fcf-protection=branch%> requires CET support on this target. Use -mcet or one of -mibt, -mshstk options to enable CET" -msgstr "Le contrôleur de pointeurs requiert le support MPX sur cette cible. Utilisez les options -mmpx pour activer MPX." +msgstr "%<-fcf-protection=branch%> requiert le support CET sur cette cible. Utilisez -mcet ou une des options -mibt ou -mshstk pour activer CET" #: config/i386/i386.c:4903 -#, fuzzy, gcc-internal-format -#| msgid "Pointer Checker requires MPX support on this target. Use -mmpx options to enable MPX." +#, gcc-internal-format msgid "%<-fcf-protection=return%> requires CET support on this target. Use -mcet or one of -mibt, -mshstk options to enable CET" -msgstr "Le contrôleur de pointeurs requiert le support MPX sur cette cible. Utilisez les options -mmpx pour activer MPX." +msgstr "%<-fcf-protection=return%> requiert le support CET sur cette cible. Utilisez -mcet ou une des options -mibt ou -mshstk pour activer CET" #: config/i386/i386.c:5478 config/i386/i386.c:5525 config/s390/s390.c:15588 #: config/s390/s390.c:15638 config/s390/s390.c:15655 @@ -29394,10 +29017,9 @@ msgid "option(\"%s\") was already specified" msgstr "option(\"%s\") a déjà été spécifié" #: config/i386/i386.c:5788 -#, fuzzy, gcc-internal-format -#| msgid "stdcall and cdecl attributes are not compatible" +#, gcc-internal-format msgid "interrupt and naked attributes are not compatible" -msgstr "les attributs stdcall et cdecl sont incompatibles" +msgstr "les attributs d'interruption et nus sont incompatibles" #: config/i386/i386.c:5803 #, gcc-internal-format @@ -29405,16 +29027,14 @@ msgid "Only DWARF debug format is supported for interrupt service routine." msgstr "Seul le format de débogage DWARF est supporté pour les routines de service d'interruptions." #: config/i386/i386.c:5852 -#, fuzzy, gcc-internal-format -#| msgid "-msdata=%s and -mcall-%s are incompatible" +#, gcc-internal-format msgid "%<-mindirect-branch=%s%> and %<-mcmodel=large%> are not compatible" -msgstr "-msdata=%s et -mcall-%s sont incompatibles" +msgstr "%<-mindirect-branch=%s%> et %<-mcmodel=large%> sont incompatibles" #: config/i386/i386.c:5890 -#, fuzzy, gcc-internal-format -#| msgid "-msdata=%s and -mcall-%s are incompatible" +#, gcc-internal-format msgid "%<-mfunction-return=%s%> and %<-mcmodel=large%> are not compatible" -msgstr "-msdata=%s et -mcall-%s sont incompatibles" +msgstr "%<-mfunction-return=%s%> et %<-mcmodel=large%> sont incompatibles" # Le dernier %s est le texte non traduit « exception » ou « interrupt ». #: config/i386/i386.c:5988 @@ -29593,10 +29213,9 @@ msgid "The ABI for passing parameters with %d-byte alignment has changed in GCC msgstr "L'ABI pour passer des paramètres avec un alignement de %d octets a changé dans GCC 4.6" #: config/i386/i386.c:11494 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "-march=%s is not compatible with the selected ABI" +#, gcc-internal-format, gfc-internal-format msgid "-mcall-ms2sysv-xlogues is not compatible with %s" -msgstr "assert : %s est compatible avec l'ABI sélectionné" +msgstr "-mcall-ms2sysv-xlogues est incompatible avec %s" #: config/i386/i386.c:13424 #, gcc-internal-format @@ -29626,10 +29245,9 @@ msgid "-fsplit-stack does not support 3 register parameters" msgstr "-fsplit-stack ne supporte pas trois paramètres registres" #: config/i386/i386.c:17762 -#, fuzzy, gcc-internal-format -#| msgid "unsupported size for integer register" +#, gcc-internal-format msgid "'V' modifier on non-integer register" -msgstr "taille non supportée pour un registre entier" +msgstr "modificateur « V » sur un registre non entier" #: config/i386/i386.c:17773 config/i386/i386.c:17787 #, gcc-internal-format @@ -29659,7 +29277,7 @@ msgstr "une routine de service d'interruption ne peut pas être appelée directe #: config/i386/i386.c:29761 #, gcc-internal-format msgid "empty class %qT parameter passing ABI changes in -fabi-version=12 (GCC 8)" -msgstr "" +msgstr "l'ABI de passage de paramètres pour la classe vide %qT change avec -fabi-version=12 (GCC 8)" #: config/i386/i386.c:32138 #, gcc-internal-format @@ -29855,10 +29473,9 @@ msgid "%qE attribute requires a string constant argument" msgstr "l'attribut %qE requiert un argument de type constante chaîne de caractères" #: config/i386/i386.c:41176 config/i386/i386.c:41198 -#, fuzzy, gcc-internal-format -#| msgid "argument of %qE attribute is not \"ilink\"" +#, gcc-internal-format msgid "argument to %qE attribute is not (keep|thunk|thunk-inline|thunk-extern)" -msgstr "l'argument de l'attribut %qE n'est pas « ilink »" +msgstr "l'argument de l'attribut %qE n'est pas (keep|thunk|thunk-inline|thunk-extern)" #: config/i386/i386.c:41230 #, gcc-internal-format @@ -29896,10 +29513,9 @@ msgid "invalid type for asm flag output" msgstr "type invalide pour la sortie du fanion asm" #: config/i386/i386.c:50169 -#, fuzzy, gcc-internal-format -#| msgid "Unknown architecture specific memory model" +#, gcc-internal-format msgid "unknown architecture specific memory model" -msgstr "Modèle mémoire spécifique à l'architecture inconnu" +msgstr "modèle mémoire spécifique à l'architecture inconnu" #: config/i386/i386.c:50176 #, gcc-internal-format @@ -29917,16 +29533,14 @@ msgid "unsupported simdlen %d" msgstr "simdlen %d non supportée" #: config/i386/i386.c:50225 -#, fuzzy, gcc-internal-format -#| msgid "unsupported return type %qT for simd\n" +#, gcc-internal-format msgid "unsupported return type %qT for simd" -msgstr "type de retour %qT non supporté pour simd\n" +msgstr "type de retour %qT non supporté pour simd" #: config/i386/i386.c:50247 -#, fuzzy, gcc-internal-format -#| msgid "unsupported argument type %qT for simd\n" +#, gcc-internal-format msgid "unsupported argument type %qT for simd" -msgstr "type d'argument %qT non supporté pour simd\n" +msgstr "type d'argument %qT non supporté pour simd" #: config/i386/i386.c:50568 #, gcc-internal-format @@ -30632,16 +30246,14 @@ msgid "argument of %qE attribute is not a string constant or number" msgstr "l'argument de l'attribut %qE n'est pas une constante de type chaîne de caractères ou un nombre" #: config/msp430/msp430.c:2019 -#, fuzzy, gcc-internal-format -#| msgid "`%s' attribute can only be applied to Java class definitions" +#, gcc-internal-format msgid "%qE attribute cannot be applied to variables with specific sections" -msgstr "attribut « %s » peut seulement être appliqué aux définitions de classes Java" +msgstr "l'attribut %qE ne peut pas être appliqué aux variables avec des sections spécifiques" #: config/msp430/msp430.c:2023 -#, fuzzy, gcc-internal-format -#| msgid "%qE attribute has no effect on functions with static linkage" +#, gcc-internal-format msgid "%qE attribute has no effect on automatic variables" -msgstr "l'attribut %qE n'a pas d'effet sur les fonctions statiques" +msgstr "l'attribut %qE n'a pas d'effet sur les variables automatiques" #: config/msp430/msp430.c:2170 #, gcc-internal-format @@ -30781,34 +30393,29 @@ msgid "PIC support for -fstack-limit-symbol" msgstr "support PIC pour -fstack-limit-symbol" #: config/nios2/nios2.c:1387 -#, fuzzy, gcc-internal-format -#| msgid "profiling not supported with -mg" +#, gcc-internal-format msgid "-mgpopt not supported with PIC." -msgstr "le profilage n'est pas supporté avec -mg" +msgstr "-mgpopt pas supporté avec PIC." #: config/nios2/nios2.c:1389 -#, fuzzy, gcc-internal-format -#| msgid "profiling not supported with -mg" +#, gcc-internal-format msgid "-mgprel-sec= not supported with PIC." -msgstr "le profilage n'est pas supporté avec -mg" +msgstr "-mgprel-sec= pas supporté avec PIC." #: config/nios2/nios2.c:1391 -#, fuzzy, gcc-internal-format -#| msgid "profiling not supported with -mg" +#, gcc-internal-format msgid "-mr0rel-sec= not supported with PIC." -msgstr "le profilage n'est pas supporté avec -mg" +msgstr "-mr0rel-sec= pas supporté avec PIC." #: config/nios2/nios2.c:1399 -#, fuzzy, gcc-internal-format -#| msgid "ordered argument needs positive constant integer expression" +#, gcc-internal-format msgid "-mgprel-sec= argument is not a valid regular expression." -msgstr "les arguments ordonnés ont besoin d'une expression entière constante positive" +msgstr "l'argument de -mgprel-sec= n'est pas une expression rationnelle valide." #: config/nios2/nios2.c:1405 -#, fuzzy, gcc-internal-format -#| msgid "ordered argument needs positive constant integer expression" +#, gcc-internal-format msgid "-mr0rel-sec= argument is not a valid regular expression." -msgstr "les arguments ordonnés ont besoin d'une expression entière constante positive" +msgstr "l'argument de -mr0rel-sec= n'est pas une expression rationnelle valable." #: config/nios2/nios2.c:1416 #, gcc-internal-format @@ -30936,10 +30543,9 @@ msgid "option %s is not supported together with -fopenacc" msgstr "l'option %s n'est pas supportée avec -fopenacc" #: config/nvptx/nvptx.c:191 -#, fuzzy, gcc-internal-format -#| msgid "writing to address space %qs not supported" +#, gcc-internal-format msgid "not generating patch area, nops not supported" -msgstr "l'écriture dans l'espace d'adresses %qs n'est pas supportée" +msgstr "pas de génération de zone de correctif, nops pas supporté" #: config/nvptx/nvptx.c:278 #, gcc-internal-format @@ -31131,10 +30737,9 @@ msgid "passing arg %d of %qE discards qualifiers from pointer target type" msgstr "le passage de l'argument %d de %qE abandonne les qualificatifs du type cible du pointeur" #: config/powerpcspe/powerpcspe-c.c:6515 -#, fuzzy, gcc-internal-format -#| msgid "vec_cmpne only accepts 2 arguments" +#, gcc-internal-format msgid "__builtin_cmpb only accepts 2 arguments" -msgstr "vec_cmpne accepte uniquement 2 arguments" +msgstr "__builtin_cmpb accepte uniquement 2 arguments" #: config/powerpcspe/powerpcspe-c.c:6573 #, gcc-internal-format, gfc-internal-format @@ -32208,10 +31813,9 @@ msgid "ABI requires -march=rv%d" msgstr "l'ABI requiert -march=rv%d" #: config/riscv/riscv.c:4126 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "-mpreferred-stack-boundary=%d is not between %d and %d" +#, gcc-internal-format, gfc-internal-format msgid "-mpreferred-stack-boundary=%d must be between %d and %d" -msgstr "-mpreferred-stack-boundary=%d n'est pas entre %d et %d" +msgstr "-mpreferred-stack-boundary=%d doit être entre %d et %d" #. Address spaces are currently only supported by C. #: config/rl78/rl78.c:374 @@ -32267,81 +31871,69 @@ msgstr "conversion du pointeur lointain en pointeur proche" #: config/rs6000/rs6000-c.c:6118 config/rs6000/rs6000-c.c:6169 #: config/rs6000/rs6000-c.c:6439 config/rs6000/rs6000-c.c:6505 #: config/rs6000/rs6000-c.c:6856 config/rs6000/rs6000-c.c:6897 -#, fuzzy, gcc-internal-format -#| msgid "builtin %s only accepts a string argument" +#, gcc-internal-format msgid "builtin %qs only accepts 2 arguments" -msgstr "la fonction interne %s n'accepte qu'une chaîne comme argument" +msgstr "la fonction interne %qs n'accepte que 2 arguments" #: config/rs6000/rs6000-c.c:6242 config/rs6000/rs6000-c.c:6325 #: config/rs6000/rs6000-c.c:6677 -#, fuzzy, gcc-internal-format -#| msgid "builtin %s only accepts a string argument" +#, gcc-internal-format msgid "builtin %qs only accepts 3 arguments" -msgstr "la fonction interne %s n'accepte qu'une chaîne comme argument" +msgstr "la fonction interne %qs n'accepte que 3 arguments" #: config/rs6000/rs6000-c.c:6434 -#, fuzzy, gcc-internal-format -#| msgid "builtin %s only accepts a string argument" +#, gcc-internal-format msgid "builtin %qs only accepts 1 argument" -msgstr "la fonction interne %s n'accepte qu'une chaîne comme argument" +msgstr "la fonction interne %qs n'accepte qu'un argument" #: config/rs6000/rs6000-c.c:6961 -#, fuzzy, gcc-internal-format -#| msgid "Builtin function %s not supported in this compiler configuration" +#, gcc-internal-format msgid "builtin function %qs not supported in this compiler configuration" -msgstr "La fonction interne %s n'est pas supportée dans cette configuration du compilateur" +msgstr "la fonction interne %qs n'est pas supportée dans cette configuration du compilateur" #: config/rs6000/rs6000-c.c:6969 -#, fuzzy, gcc-internal-format -#| msgid "invalid parameter combination for AltiVec intrinsic %s" +#, gcc-internal-format msgid "invalid parameter combination for AltiVec intrinsic %qs" -msgstr "combinaison invalide de paramètres pour l'intrinsèque Altivec %s" +msgstr "combinaison invalide de paramètres pour l'intrinsèque Altivec %qs" # le premier %qs est un mot non traduit tel que « private », « shared » ou « threadprivate ». #: config/rs6000/rs6000.c:3743 config/rs6000/rs6000.c:3746 #: config/rs6000/rs6000.c:3749 -#, fuzzy, gcc-internal-format -#| msgid "%qE is predetermined %qs for %qs" +#, gcc-internal-format msgid "%qs requires %qs or %qs" -msgstr "%qE est prédéterminé %qs pour %qs" +msgstr "%qs requiert %qs ou %qs" #: config/rs6000/rs6000.c:3850 -#, fuzzy, gcc-internal-format -#| msgid "-m64 requires PowerPC64 architecture, enabling" +#, gcc-internal-format msgid "%qs requires PowerPC64 architecture, enabling" -msgstr "-m64 requiert une architecture PowerPC64, elle est maintenant activée" +msgstr "%qs requiert une architecture PowerPC64, elle est maintenant activée" #: config/rs6000/rs6000.c:4029 -#, fuzzy, gcc-internal-format -#| msgid "-malign-power is not supported for 64-bit Darwin; it is incompatible with the installed C and C++ libraries" +#, gcc-internal-format msgid "%qs is not supported for 64-bit Darwin; it is incompatible with the installed C and C++ libraries" -msgstr "-malign-power n'est pas supporté sur Darwin 64 bits; il est incompatible avec les bibliothèques C et C++ installées" +msgstr "%qs n'est pas supporté sur Darwin 64 bits; il est incompatible avec les bibliothèques C et C++ installées" #: config/rs6000/rs6000.c:4128 -#, fuzzy, gcc-internal-format -#| msgid "will not generate power9 instructions because assembler lacks power9 support" +#, gcc-internal-format msgid "will not generate %qs instructions because assembler lacks %qs support" -msgstr "ne générera pas d'instructions power9 car l'assembleur ne supporte pas power9" +msgstr "ne générera pas d'instructions %s car l'assembleur ne supporte pas %s" #: config/rs6000/rs6000.c:4221 -#, fuzzy, gcc-internal-format -#| msgid "-mstring is not supported on little endian systems" +#, gcc-internal-format msgid "%qs is not supported on little endian systems" -msgstr "-mstring n'est pas supporté sur des systèmes petits boutistes" +msgstr "%qs n'est pas supporté sur des systèmes petits boutistes" #: config/rs6000/rs6000.c:4314 -#, fuzzy, gcc-internal-format -#| msgid "Power9 target option is incompatible with -mcpu= for less than power9" +#, gcc-internal-format msgid "power9 target option is incompatible with %<%s=%> for less than power9" -msgstr "L'option de la cible power9 est incompatible avec -mcpu= pour inférieur à power9" +msgstr "l'option de la cible power9 est incompatible avec %<%s=%> pour inférieur à power9" #. Enforce that none of the ISA_3_0_MASKS_SERVER flags #. were explicitly cleared. #: config/rs6000/rs6000.c:4322 -#, fuzzy, gcc-internal-format -#| msgid "-mpower9-minmax incompatible with explicitly disabled options" +#, gcc-internal-format msgid "%qs incompatible with explicitly disabled options" -msgstr "-mpower9-minmax est incompatible avec les options explicitement désactivées" +msgstr "%qs est incompatible avec les options explicitement désactivées" #. We prefer to not mention undocumented options in #. error messages. However, if users have managed to select @@ -32354,324 +31946,273 @@ msgstr "-mpower9-minmax est incompatible avec les options explicitement désacti #: config/rs6000/rs6000.c:4519 config/rs6000/rs6000.c:4546 #: config/rs6000/rs6000.c:4561 config/rs6000/rs6000.c:4569 #: config/rs6000/rs6000.c:4665 -#, fuzzy, gcc-internal-format -#| msgid "%qF requires -mvx" +#, gcc-internal-format msgid "%qs requires %qs" -msgstr "%qF requiert -mvx" +msgstr "%qs requiert %qs" #: config/rs6000/rs6000.c:4606 -#, fuzzy, gcc-internal-format -#| msgid "using IEEE extended precision long double" +#, gcc-internal-format msgid "Using IEEE extended precision long double" -msgstr "utilisation du long double en précision étendue de IEEE" +msgstr "Utilisation du long double en précision étendue de IEEE" #: config/rs6000/rs6000.c:4608 -#, fuzzy, gcc-internal-format -#| msgid "using IBM extended precision long double" +#, gcc-internal-format msgid "Using IBM extended precision long double" -msgstr "utilisation du long double en précision étendue de IBM" +msgstr "Utilisation du long double en précision étendue de IBM" #: config/rs6000/rs6000.c:4625 -#, fuzzy, gcc-internal-format -#| msgid "-mfloat128 requires VSX support" +#, gcc-internal-format msgid "%qs requires VSX support" -msgstr "-mfloat128 requiert le support VSX" +msgstr "%qs requiert le support VSX" #: config/rs6000/rs6000.c:4634 #, gcc-internal-format msgid "The -mfloat128 option may not be fully supported" -msgstr "" +msgstr "L'option -mfloat128 peut ne pas être totalement supportée" #: config/rs6000/rs6000.c:4657 -#, fuzzy, gcc-internal-format -#| msgid "-mfloat128-hardware requires full ISA 3.0 support" +#, gcc-internal-format msgid "%qs requires full ISA 3.0 support" -msgstr "-mfloat128-hardware requiert le support ISA 3.0 complet" +msgstr "%qs requiert le support ISA 3.0 complet" #: config/rs6000/rs6000.c:4724 -#, fuzzy, gcc-internal-format -#| msgid "unknown vectorization library ABI type (%s) for -mveclibabi= switch" +#, gcc-internal-format msgid "unknown vectorization library ABI type (%qs) for %qs switch" -msgstr "type d'ABI de la bibliothèque de vectorisation (%s) inconnu pour l'option -mveclibabi=" +msgstr "type d'ABI de la bibliothèque de vectorisation (%qs) inconnu pour l'option %qs" #: config/rs6000/rs6000.c:4930 -#, fuzzy, gcc-internal-format -#| msgid "%qs is not valid for %qs" +#, gcc-internal-format msgid "%qs is not a valid number in %qs" -msgstr "%qs n'est pas valide pour %qs" +msgstr "%qs n'est pas un nombre valide dans %qs" #: config/rs6000/rs6000.c:4935 -#, fuzzy, gcc-internal-format -#| msgid "%qs is not valid for %qs" +#, gcc-internal-format msgid "%qs is not a valid offset in %qs" -msgstr "%qs n'est pas valide pour %qs" +msgstr "%qs n'est pas un décalage valide dans %qs" #: config/rs6000/rs6000.c:4947 -#, fuzzy, gcc-internal-format -#| msgid "%qs is not a valid base register in -mstack-protector-guard-reg=" +#, gcc-internal-format msgid "%qs is not a valid base register in %qs" -msgstr "%qs n'est pas un registre de base valable dans -mstack-protector-guard-reg=" +msgstr "%qs n'est pas un registre de base valable dans %qs" #: config/rs6000/rs6000.c:4955 -#, fuzzy, gcc-internal-format -#| msgid "-mstack-protector-guard=tls needs a valid base register" +#, gcc-internal-format msgid "%qs needs a valid base register" -msgstr "-mstack-protector-guard=tls a besoin d'un registre de base valable" +msgstr "%qs a besoin d'un registre de base valable" #: config/rs6000/rs6000.c:5253 -#, fuzzy, gcc-internal-format -#| msgid "unknown option for -mrecip=%s" +#, gcc-internal-format msgid "unknown option for %<%s=%s%>" -msgstr "option inconnue pour -mrecip=%s" +msgstr "option inconnue pour %<%s=%s%>" #: config/rs6000/rs6000.c:11385 -#, fuzzy, gcc-internal-format -#| msgid "cannot return value in vector register because altivec instructions are disabled, use -maltivec to enable them" +#, gcc-internal-format msgid "cannot return value in vector register because altivec instructions are disabled, use %qs to enable them" -msgstr "la valeur ne peut être retournée dans le registre vectoriel parce que les instructions altivec sont désactivées, utilisez -maltivec pour les autoriser" +msgstr "la valeur ne peut être retournée dans le registre vectoriel parce que les instructions altivec sont désactivées, utilisez %qs pour les autoriser" #: config/rs6000/rs6000.c:11846 -#, fuzzy, gcc-internal-format -#| msgid "cannot pass argument in vector register because altivec instructions are disabled, use -maltivec to enable them" +#, gcc-internal-format msgid "cannot pass argument in vector register because altivec instructions are disabled, use %qs to enable them" -msgstr "l'argument ne peut pas être passé dans le registre vectoriel parce que les instructions altivec sont désactivées, utilisez -maltivec pour les autoriser" +msgstr "l'argument ne peut pas être passé dans le registre vectoriel parce que les instructions altivec sont désactivées, utilisez %qs pour les autoriser" #: config/rs6000/rs6000.c:13555 -#, fuzzy, gcc-internal-format -#| msgid "internal error: builtin function %s already processed" +#, gcc-internal-format msgid "internal error: builtin function %qs already processed" -msgstr "erreur interne: fonction interne %s déjà traitée" +msgstr "erreur interne: fonction interne %qs déjà traitée" #: config/rs6000/rs6000.c:14133 -#, fuzzy, gcc-internal-format -#| msgid "argument 2 must be a 5-bit unsigned literal" +#, gcc-internal-format msgid "argument 2 must be a 1-bit unsigned literal" -msgstr "l'argument 2 doit être un littéral non signé de 5 bits" +msgstr "l'argument 2 doit être un littéral non signé de 1 bit" #: config/rs6000/rs6000.c:14172 -#, fuzzy, gcc-internal-format -#| msgid "argument %d of %qE must be a pointer type" +#, gcc-internal-format msgid "argument 1 of %qs must be a constant" -msgstr "l'argument %d de %qE doit être un type pointeur" +msgstr "l'argument 1 de %qs doit être une constante" #: config/rs6000/rs6000.c:14230 config/rs6000/rs6000.c:16008 -#, fuzzy, gcc-internal-format -#| msgid "argument 1 of __builtin_spe_predicate is out of range" +#, gcc-internal-format msgid "argument 1 of %qs is out of range" -msgstr "l'argument 1 de « __builtin_spe_predicate » est hors limite" +msgstr "l'argument 1 de %qs est hors limite" #: config/rs6000/rs6000.c:14724 -#, fuzzy, gcc-internal-format -#| msgid "builtin %s is only valid in 64-bit mode" +#, gcc-internal-format msgid "builtin %qs is only valid in 64-bit mode" -msgstr "la fonction interne %s est uniquement valable en mode 64 bits" +msgstr "la fonction interne %qs est uniquement valable en mode 64 bits" #: config/rs6000/rs6000.c:14921 -#, fuzzy, gcc-internal-format -#| msgid "builtin %s only accepts a string argument" +#, gcc-internal-format msgid "builtin %qs only accepts a string argument" -msgstr "la fonction interne %s n'accepte qu'une chaîne comme argument" +msgstr "la fonction interne %qs n'accepte qu'une chaîne comme argument" #. Invalid CPU argument. #: config/rs6000/rs6000.c:14940 -#, fuzzy, gcc-internal-format -#| msgid "cpu %s is an invalid argument to builtin %s" +#, gcc-internal-format msgid "cpu %qs is an invalid argument to builtin %qs" -msgstr "le processeur %s est un argument invalide pour la fonction interne %s" +msgstr "le processeur %qs est un argument invalide pour la fonction interne %qs" #. Invalid HWCAP argument. #: config/rs6000/rs6000.c:14968 -#, fuzzy, gcc-internal-format -#| msgid "cpu %s is an invalid argument to builtin %s" +#, gcc-internal-format msgid "%s %qs is an invalid argument to builtin %qs" -msgstr "le processeur %s est un argument invalide pour la fonction interne %s" +msgstr "%s %qs est un argument invalide pour la fonction interne %qs" #: config/rs6000/rs6000.c:14994 -#, fuzzy, gcc-internal-format -#| msgid "%s needs GLIBC (2.23 and newer) that exports hardware capability bits" +#, gcc-internal-format msgid "builtin %qs needs GLIBC (2.23 and newer) that exports hardware capability bits" -msgstr "%s requiert GLIBC (2.23 ou plus récent) qui exporte des bits de capacité matérielle" +msgstr "la fonction interne %qs requiert GLIBC (2.23 ou plus récent) qui exporte des bits de capacité matérielle" #: config/rs6000/rs6000.c:15727 -#, fuzzy, gcc-internal-format -#| msgid "second argument to vec_vextract4b must be 0..12" +#, gcc-internal-format msgid "second argument to %qs must be 0..12" -msgstr "le deuxième argument de vec_vextract4b doit être 0..12" +msgstr "le deuxième argument de %qs doit être 0..12" #: config/rs6000/rs6000.c:15744 -#, fuzzy, gcc-internal-format -#| msgid "third argument to vec_vinsert4b must be 0..12" +#, gcc-internal-format msgid "third argument to %qs must be 0..12" -msgstr "le troisième argument de « vec_vinsert4b » doit être 0..12" +msgstr "le troisième argument de %qs doit être 0..12" #: config/rs6000/rs6000.c:15960 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "argument %d of %qE must be a pointer type" +#, gcc-internal-format, gfc-internal-format msgid "argument 1 of %s must be a constant" -msgstr "l'argument %d de %qE doit être un type pointeur" +msgstr "l'argument 1 de %s doit être une constante" #: config/rs6000/rs6000.c:16030 -#, fuzzy, gcc-internal-format -#| msgid "Builtin function %s is only valid for the cell processor" +#, gcc-internal-format msgid "builtin function %qs is only valid for the cell processor" -msgstr "La fonction interne %s est uniquement valable pour le processeur cell" +msgstr "la fonction interne %qs est uniquement valable pour le processeur cell" #: config/rs6000/rs6000.c:16032 config/rs6000/rs6000.c:16034 #: config/rs6000/rs6000.c:16036 config/rs6000/rs6000.c:16038 #: config/rs6000/rs6000.c:16044 config/rs6000/rs6000.c:16046 #: config/rs6000/rs6000.c:16053 config/rs6000/rs6000.c:16060 #: config/rs6000/rs6000.c:16067 config/rs6000/rs6000.c:16073 -#, fuzzy, gcc-internal-format -#| msgid "Builtin function %s requires the -mvsx option" +#, gcc-internal-format msgid "builtin function %qs requires the %qs option" -msgstr "La fonction interne %s requiert l'option -mvsx" +msgstr "la fonction interne %qs requiert l'option %qs" #: config/rs6000/rs6000.c:16041 config/rs6000/rs6000.c:16050 #: config/rs6000/rs6000.c:16057 config/rs6000/rs6000.c:16064 -#, fuzzy, gcc-internal-format -#| msgid "Builtin function %s requires the -mvsx option" +#, gcc-internal-format msgid "builtin function %qs requires the %qs and %qs options" -msgstr "La fonction interne %s requiert l'option -mvsx" +msgstr "la fonction interne %qs requiert les options %qs et %qs" #: config/rs6000/rs6000.c:16070 -#, fuzzy, gcc-internal-format -#| msgid "Builtin function %s requires the -mfloat128 option" +#, gcc-internal-format msgid "builtin function %qs requires ISA 3.0 IEEE 128-bit floating point" -msgstr "La fonction interne %s requiert l'option -mfloat128" +msgstr "la fonction interne %qs requiert l'ISA 3.0 en virgule flottante IEEE 128 bits" #: config/rs6000/rs6000.c:16075 -#, fuzzy, gcc-internal-format -#| msgid "Builtin function %s is not supported with the current options" +#, gcc-internal-format msgid "builtin function %qs is not supported with the current options" -msgstr "La fonction interne %s n'est pas supportée avec les options actuelles" +msgstr "la fonction interne %qs n'est pas supportée avec les options actuelles" #: config/rs6000/rs6000.c:18293 -#, fuzzy, gcc-internal-format -#| msgid "internal error: builtin function %s had an unexpected return type %s" +#, gcc-internal-format msgid "internal error: builtin function %qs had an unexpected return type %qs" -msgstr "erreur interne: la fonction interne %s a un type de retour %s inattendu" +msgstr "erreur interne: la fonction interne %qs a un type de retour %qs inattendu" #: config/rs6000/rs6000.c:18310 -#, fuzzy, gcc-internal-format -#| msgid "internal error: builtin function %s, argument %d had unexpected argument type %s" +#, gcc-internal-format msgid "internal error: builtin function %qs, argument %d had unexpected argument type %qs" -msgstr "erreur interne: pour la fonction interne %s, l'argument %d a le type %s inattendu" +msgstr "erreur interne: pour la fonction interne %qs, l'argument %d a le type %qs inattendu" #: config/rs6000/rs6000.c:29484 -#, fuzzy, gcc-internal-format -#| msgid "-fsplit-stack uses register r29" +#, gcc-internal-format msgid "%qs uses register r29" -msgstr "-fsplit-stack utilise le registre r29" +msgstr "%qs utilise le registre r29" #: config/rs6000/rs6000.c:32780 -#, fuzzy, gcc-internal-format -#| msgid "You cannot take the address of a nested function if you use the -mno-pointers-to-nested-functions option." +#, gcc-internal-format msgid "you cannot take the address of a nested function if you use the %qs option" -msgstr "Vous ne pouvez pas prendre l'adresse d'une fonction imbriquée si vous utilisez l'option -mno-pointers-to-nested-functions." +msgstr "Vous ne pouvez pas prendre l'adresse d'une fonction imbriquée si vous utilisez l'option %qs" #: config/rs6000/rs6000.c:32874 -#, fuzzy, gcc-internal-format -#| msgid "use of % in AltiVec types is invalid for 64-bit code without -mvsx" +#, gcc-internal-format msgid "use of % in AltiVec types is invalid for 64-bit code without %qs" -msgstr "l'utilisation de % dans les types AltiVec est invalide pour du code 64 bits sans -mvsx" +msgstr "l'utilisation de % dans les types AltiVec est invalide pour du code 64 bits sans %qs" #: config/rs6000/rs6000.c:32882 -#, fuzzy, gcc-internal-format -#| msgid "use of % in AltiVec types is invalid without -mvsx" +#, gcc-internal-format msgid "use of % in AltiVec types is invalid without %qs" -msgstr "l'utilisation de % dans les types AltiVec est invalide sans -mvsx" +msgstr "l'utilisation de % dans les types AltiVec est invalide sans %qs" #: config/rs6000/rs6000.c:32885 -#, fuzzy, gcc-internal-format -#| msgid "use of % in AltiVec types is invalid without -mvsx" +#, gcc-internal-format msgid "use of % in AltiVec types is invalid without %qs" -msgstr "l'utilisation de % dans les types AltiVec est invalide sans -mvsx" +msgstr "l'utilisation de % dans les types AltiVec est invalide sans %qs" #: config/rs6000/rs6000.c:36902 -#, fuzzy, gcc-internal-format -#| msgid "invalid cpu \"%s\" for %s\"%s\"%s" +#, gcc-internal-format msgid "invalid cpu %qs for %s%qs%s" -msgstr "processeur « %s » invalide pour %s\"%s\"%s" +msgstr "processeur %qs invalide pour %s\"%s\"%s" #: config/rs6000/rs6000.c:36905 -#, fuzzy, gcc-internal-format -#| msgid "%s\"%s\"%s is not allowed" +#, gcc-internal-format msgid "%s%qs%s is not allowed" msgstr "%s\"%s\"%s n'est pas permis" #: config/rs6000/rs6000.c:36907 -#, fuzzy, gcc-internal-format -#| msgid "%s\"%s\"%s is invalid" +#, gcc-internal-format msgid "%s%qs%s is invalid" msgstr "%s\"%s\"%s est invalide" #: config/rs6000/rs6000.c:37442 -#, fuzzy, gcc-internal-format -#| msgid "-mno-%s turns off -m%s" +#, gcc-internal-format msgid "%<-mno-%s%> turns off %<-m%s%>" -msgstr "-mno-%s désactive -m%s" +msgstr "%<-mno-%s%> désactive %<-m%s%>" #: config/rs6000/rs6000.c:37601 -#, fuzzy, gcc-internal-format -#| msgid "%s needs GLIBC (2.23 and newer) that exports hardware capability bits" +#, gcc-internal-format msgid "target_clones attribute needs GLIBC (2.23 and newer) that exports hardware capability bits" -msgstr "%s requiert GLIBC (2.23 ou plus récent) qui exporte des bits de capacité matérielle" +msgstr "l'attribut target_clones requiert GLIBC (2.23 ou plus récent) qui exporte des bits de capacité matérielle" #. The macro SUBTARGET_OVERRIDE_OPTIONS is provided for subtargets, to #. get control in TARGET_OPTION_OVERRIDE. #: config/rs6000/sysv4.h:111 -#, fuzzy, gcc-internal-format -#| msgid "bad value for -mcall-%s" +#, gcc-internal-format msgid "bad value for %<%s-%s%>" -msgstr "valeur erronée pour -mcall-%s" +msgstr "valeur erronée pour %<%s-%s%>" #: config/rs6000/sysv4.h:127 -#, fuzzy, gcc-internal-format -#| msgid "bad value for -msdata=%s" +#, gcc-internal-format msgid "bad value for %<%s=%s%>" -msgstr "valeur erronée pour -msdata=%s" +msgstr "valeur erronée pour %<%s=%s%>" #: config/rs6000/sysv4.h:144 -#, fuzzy, gcc-internal-format -#| msgid "-f%s and -msdata=%s are incompatible" +#, gcc-internal-format msgid "%qs and %<%s=%s%> are incompatible" -msgstr "-f%s et -msdata=%s sont incompatibles" +msgstr "%qs et %<%s=%s%> sont incompatibles" #: config/rs6000/sysv4.h:153 -#, fuzzy, gcc-internal-format -#| msgid "-f%s and -msdata=%s are incompatible" +#, gcc-internal-format msgid "%<-f%s%> and %<%s=%s%> are incompatible" -msgstr "-f%s et -msdata=%s sont incompatibles" +msgstr "%<-f%s%> et %<%s=%s%> sont incompatibles" #: config/rs6000/sysv4.h:162 -#, fuzzy, gcc-internal-format -#| msgid "-msdata=%s and -mcall-%s are incompatible" +#, gcc-internal-format msgid "%<%s=%s%> and %<%s-%s%> are incompatible" -msgstr "-msdata=%s et -mcall-%s sont incompatibles" +msgstr "%<%s=%s%> et %<%s-%s%> sont incompatibles" #: config/rs6000/sysv4.h:171 -#, fuzzy, gcc-internal-format -#| msgid "-f%s and -msdata=%s are incompatible" +#, gcc-internal-format msgid "%qs and %qs are incompatible" -msgstr "-f%s et -msdata=%s sont incompatibles" +msgstr "%qs et %qs sont incompatibles" #: config/rs6000/sysv4.h:178 config/rs6000/sysv4.h:185 -#, fuzzy, gcc-internal-format -#| msgid "-f%s and -msdata=%s are incompatible" +#, gcc-internal-format msgid "%qs and %<%s-%s%> are incompatible" -msgstr "-f%s et -msdata=%s sont incompatibles" +msgstr "%qs et %<%s-%s%> sont incompatibles" #: config/rs6000/sysv4.h:191 -#, fuzzy, gcc-internal-format -#| msgid "-msecure-plt not supported by your assembler" +#, gcc-internal-format msgid "%qs not supported by your assembler" -msgstr "-msecure-plt n'est pas supporté par votre assembleur" +msgstr "%qs n'est pas supporté par votre assembleur" #: config/rs6000/sysv4.h:219 -#, fuzzy, gcc-internal-format -#| msgid "-m%s not supported in this configuration" +#, gcc-internal-format msgid "%<-m%s%> not supported in this configuration" -msgstr "-m%s n'est pas supporté par cette configuration" +msgstr "%<-m%s%> n'est pas supporté par cette configuration" #: config/rx/rx.c:651 #, gcc-internal-format, gfc-internal-format @@ -32923,7 +32464,7 @@ msgstr "l'argument de %qs est trop grand (max. %d)" #: config/s390/s390.c:15413 #, gcc-internal-format msgid "-mno-pic-data-is-text-relative cannot be used without -fpic/-fPIC" -msgstr "" +msgstr "-mno-pic-data-is-text-relative ne peut pas être utilisé sans -fpic/-fPIC" #. Value is not allowed for the target attribute. #: config/s390/s390.c:15594 @@ -33991,10 +33532,9 @@ msgid "bit-field %qs has invalid type" msgstr "le champ de bits %qs a un type invalide" #: c/c-decl.c:5467 -#, fuzzy, gcc-internal-format -#| msgid "cannot declare bit-field %qD with function type" +#, gcc-internal-format msgid "cannot declare bit-field %qs with % type" -msgstr "ne peut déclarer le champ de bits %qD avec un type de fonction" +msgstr "ne peut déclarer le champ de bits %qs avec un type %" #: c/c-decl.c:5478 #, gcc-internal-format @@ -35118,10 +34658,9 @@ msgid "version control conflict marker in file" msgstr "marqueur de conflit de contrôle de version dans le fichier" #: c/c-parser.c:1087 cp/parser.c:2901 -#, fuzzy, gcc-internal-format -#| msgid "other match is here" +#, gcc-internal-format msgid "to match this %qs" -msgstr "l'autre correspondance est ici" +msgstr "pour correspondre à ce %qs" #: c/c-parser.c:1216 cp/parser.c:28264 #, gcc-internal-format @@ -35536,10 +35075,9 @@ msgid "missing loop condition in loop with % pragma" msgstr "condition de boucle manquante dans la boucle avec le pragma %" #: c/c-parser.c:6176 cp/parser.c:11657 -#, fuzzy, gcc-internal-format -#| msgid "missing loop condition in loop with % pragma" +#, gcc-internal-format msgid "missing loop condition in loop with % pragma" -msgstr "condition de boucle manquante dans la boucle avec le pragma %" +msgstr "condition de boucle manquante dans la boucle avec le pragma %" #: c/c-parser.c:6210 #, gcc-internal-format @@ -35566,19 +35104,17 @@ msgstr "le C ISO interdit l'omission du terme central de l'expression ?:" #: c/c-parser.c:6866 cp/typeck.c:4452 #, gcc-internal-format msgid "division % does not compute the number of array elements" -msgstr "" +msgstr "la division % ne calcule pas le nombre d'éléments dans le tableau" #: c/c-parser.c:6871 cp/typeck.c:4457 -#, fuzzy, gcc-internal-format -#| msgid "%qD was declared here" +#, gcc-internal-format msgid "first % operand was declared here" -msgstr "%qD a été déclaré ici" +msgstr "le premier opérande % a été déclaré ici" #: c/c-parser.c:7088 -#, fuzzy, gcc-internal-format -#| msgid "alignment specified for typedef %qE" +#, gcc-internal-format msgid "alignment specified for type name in cast" -msgstr "un alignement est spécifié pour le typedef %qE" +msgstr "un alignement est spécifié pour le nom de type dans le transtypage" #: c/c-parser.c:7187 #, gcc-internal-format @@ -35586,10 +35122,9 @@ msgid "traditional C rejects the unary plus operator" msgstr "le C traditionnel rejette le plus unaire" #: c/c-parser.c:7316 -#, fuzzy, gcc-internal-format -#| msgid "alignment specified for typedef %qE" +#, gcc-internal-format msgid "alignment specified for type name in %" -msgstr "un alignement est spécifié pour le typedef %qE" +msgstr "un alignement est spécifié pour le nom de type dans %" #: c/c-parser.c:7332 #, gcc-internal-format @@ -35597,10 +35132,9 @@ msgid "% applied to a bit-field" msgstr "% appliqué sur un champ de bits" #: c/c-parser.c:7401 -#, fuzzy, gcc-internal-format -#| msgid "alignment specified for typedef %qE" +#, gcc-internal-format msgid "alignment specified for type name in %qE" -msgstr "un alignement est spécifié pour le typedef %qE" +msgstr "un alignement est spécifié pour le nom de type dans %qE" #: c/c-parser.c:7424 #, gcc-internal-format @@ -35673,28 +35207,24 @@ msgid "%<_Generic%> selector of type %qT is not compatible with any association" msgstr "le sélecteur %<_Generic%> du type %qT n'est compatible avec aucune association" #: c/c-parser.c:7715 -#, fuzzy, gcc-internal-format -#| msgid "first argument to %<__builtin_choose_expr%> not a constant" +#, gcc-internal-format msgid "argument %u of %<__builtin_tgmath%> is not a function pointer" -msgstr "le premier argument de %<__builtin_choose_expr%> n'est pas une constante" +msgstr "l'argument %u de %<__builtin_tgmath%> n'est pas un pointeur de fonction" #: c/c-parser.c:7723 -#, fuzzy, gcc-internal-format -#| msgid "argument %qD doesn%'t match prototype" +#, gcc-internal-format msgid "argument %u of %<__builtin_tgmath%> is unprototyped" -msgstr "l'argument %qD ne concorde pas avec le prototype" +msgstr "l'argument %u de %<__builtin_tgmath%> n'a pas été de prototypé" #: c/c-parser.c:7729 -#, fuzzy, gcc-internal-format -#| msgid "argument of %<__builtin_eh_return_regno%> must be constant" +#, gcc-internal-format msgid "argument %u of %<__builtin_tgmath%> has variable arguments" -msgstr "l'argument de %<__builtin_eh_return_regno%> doit être une constante" +msgstr "l'argument %u de %<__builtin_tgmath%> a des arguments variables" #: c/c-parser.c:7745 -#, fuzzy, gcc-internal-format -#| msgid "argument of %<__builtin_eh_return_regno%> must be constant" +#, gcc-internal-format msgid "argument %u of %<__builtin_tgmath%> has no arguments" -msgstr "l'argument de %<__builtin_eh_return_regno%> doit être une constante" +msgstr "l'argument %u de %<__builtin_tgmath%> n'a pas d'argument" #: c/c-parser.c:7915 c/c-parser.c:8950 c/c-parser.c:8972 c/gimple-parser.c:978 #: c/gimple-parser.c:984 c/gimple-parser.c:1468 @@ -35738,101 +35268,89 @@ msgid "first argument to %<__builtin_choose_expr%> not a constant" msgstr "le premier argument de %<__builtin_choose_expr%> n'est pas une constante" #: c/c-parser.c:8242 c/c-parser.c:8259 c/c-parser.c:8266 -#, fuzzy, gcc-internal-format -#| msgid "too few arguments to function %" +#, gcc-internal-format msgid "too few arguments to %<__builtin_tgmath%>" -msgstr "trop peu d'arguments pour la fonction %" +msgstr "trop peu d'arguments pour %<__builtin_tgmath%>" #: c/c-parser.c:8287 -#, fuzzy, gcc-internal-format -#| msgid "%qs argument of %qs intrinsic at %L has wrong number of elements (%d/%d)" +#, gcc-internal-format msgid "argument %u of %<__builtin_tgmath%> has wrong number of arguments" -msgstr "L'argument %qs de l'intrinsèque %qs à %L a un mauvais nombre d'éléments (%d/%d)" +msgstr "l'argument %u de %<__builtin_tgmath%> a le mauvais nombre d'arguments" #: c/c-parser.c:8331 c/c-parser.c:8341 #, gcc-internal-format msgid "invalid type-generic return type for argument %u of %<__builtin_tgmath%>" -msgstr "" +msgstr "le type de retour est un type générique, ce qui est invalide, pour l'argument %u de %<__builtin_tgmath%>" #: c/c-parser.c:8363 c/c-parser.c:8373 #, gcc-internal-format msgid "invalid type-generic type for argument %u of argument %u of %<__builtin_tgmath%>" -msgstr "" +msgstr "le type d'un type générique est invalide pour l'argument %u de l'argument %u de %<__builtin_tgmath%>" #: c/c-parser.c:8406 -#, fuzzy, gcc-internal-format -#| msgid "%qs and %qs arguments of %qs intrinsic at %L must have the same type" +#, gcc-internal-format msgid "function arguments of %<__builtin_tgmath%> all have the same type" -msgstr "Les arguments %qs et %qs de l'intrinsèque %qs à %L doivent avoir le même type" +msgstr "les arguments fonctions de %<__builtin_tgmath%> ont tous le même type" #: c/c-parser.c:8425 #, gcc-internal-format msgid "function arguments of %<__builtin_tgmath%> lack type-generic parameter" -msgstr "" +msgstr "les arguments fonctions de %<__builtin_tgmath%> n'ont pas de paramètre de type générique" #: c/c-parser.c:8473 #, gcc-internal-format msgid "duplicate type-generic parameter type for function argument %u of %<__builtin_tgmath%>" -msgstr "" +msgstr "type de paramètre de type générique dupliqué pour l'argument fonction %u de %<__builtin_tgmath%>" #: c/c-parser.c:8496 #, gcc-internal-format msgid "bad return type for function argument %u of %<__builtin_tgmath%>" -msgstr "" +msgstr "mauvais type de retour pour l'argument fonction %u de %<__builtin_tgmath%>" #: c/c-parser.c:8513 -#, fuzzy, gcc-internal-format -#| msgid "wrong number of arguments to function %<__builtin_next_arg%>" +#, gcc-internal-format msgid "bad type for argument %u of function argument %u of %<__builtin_tgmath%>" -msgstr "nombre erroné d'arguments pour la fonction %<__builtin_next_arg%>" +msgstr "mauvais type pour l'argument %u de l'argument fonction %u de %<__builtin_tgmath%>" #: c/c-parser.c:8549 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "invalid type for parameter %d of constexpr function %q+#D" +#, gcc-internal-format, gfc-internal-format msgid "invalid type of argument %u of type-generic function" -msgstr "type invalide pour le paramètre %d de la fonction constexpr %q+#D" +msgstr "type invalide pour l'argument %u de la fonction de type générique" #: c/c-parser.c:8560 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "non-floating-point argument in call to function %qE" +#, gcc-internal-format, gfc-internal-format msgid "decimal floating-point argument %u to complex-only type-generic function" -msgstr "l'argument dans l'appel de la fonction %qE n'est pas en virgule flottante" +msgstr "argument en virgule flottante décimal %u vers une fonction de type générique uniquement complexe" #: c/c-parser.c:8568 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "non-floating-point argument in call to function %qE" +#, gcc-internal-format, gfc-internal-format msgid "decimal floating-point argument %u to binary-only type-generic function" -msgstr "l'argument dans l'appel de la fonction %qE n'est pas en virgule flottante" +msgstr "argument en virgule flottante décimal %u vers une fonction de type générique uniquement binaire" #: c/c-parser.c:8576 c/c-parser.c:8606 -#, fuzzy, gcc-internal-format -#| msgid "non-floating-point arguments in call to function %qE" +#, gcc-internal-format msgid "both complex and decimal floating-point arguments to type-generic function" -msgstr "l'argument dans l'appel de la fonction %qE n'est pas en virgule flottante" +msgstr "arguments à la fois complexe et en virgule flottante décimale vers une fonction de type générique" #: c/c-parser.c:8584 c/c-parser.c:8626 -#, fuzzy, gcc-internal-format -#| msgid "non-floating-point arguments in call to function %qE" +#, gcc-internal-format msgid "both binary and decimal floating-point arguments to type-generic function" -msgstr "l'argument dans l'appel de la fonction %qE n'est pas en virgule flottante" +msgstr "arguments à la fois binaire et en virgule flottante décimale vers une fonction de type générique" #: c/c-parser.c:8598 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "complex arguments must have identical types" +#, gcc-internal-format, gfc-internal-format msgid "complex argument %u to decimal-only type-generic function" -msgstr "les arguments complexes doivent avoir des types identiques" +msgstr "argument complexe %u vers une fonction de type générique uniquement décimale" #: c/c-parser.c:8618 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "invalid argument to built-in function" +#, gcc-internal-format, gfc-internal-format msgid "binary argument %u to decimal-only type-generic function" -msgstr "argument invalide pour la fonction interne" +msgstr "argument binaire %u vers une fonction de type générique uniquement décimale" #: c/c-parser.c:8709 -#, fuzzy, gcc-internal-format -#| msgid "no matching function for call to %<%D(%A)%>" +#, gcc-internal-format msgid "no matching function for type-generic call" -msgstr "pas de fonction correspondant à l'appel %<%D(%A)%>" +msgstr "pas de fonction correspondante pour l'appel de type générique" #: c/c-parser.c:8750 #, gcc-internal-format @@ -35885,10 +35403,9 @@ msgid "ISO C90 forbids compound literals" msgstr "le C90 ISO interdit les littéraux composés" #: c/c-parser.c:9038 -#, fuzzy, gcc-internal-format -#| msgid "%<_Alignas%> specifiers cannot reduce alignment of unnamed field" +#, gcc-internal-format msgid "%<_Alignas%> specifiers cannot reduce alignment of compound literal" -msgstr "les spécificateurs %<_Alignas%> ne peuvent pas réduire l'alignement du champ sans nom" +msgstr "les spécificateurs %<_Alignas%> ne peuvent pas réduire l'alignement d'un littéral composé" #: c/c-parser.c:9494 #, gcc-internal-format @@ -35958,7 +35475,7 @@ msgstr "l'attribut % ne peut être spécifié qu'une seule fois" #: c/c-parser.c:10886 cp/parser.c:38449 #, gcc-internal-format msgid "%<#pragma GCC unroll%> requires an assignment-expression that evaluates to a non-negative integral constant less than %u" -msgstr "" +msgstr "%<#pragma GCC unroll%> requiert une expression d'affectation qui est évaluée en une constante entière non négative plus petite que %u" #: c/c-parser.c:10930 c/c-parser.c:16563 c/c-parser.c:16821 c/c-parser.c:16880 #: c/c-parser.c:16964 cp/parser.c:35781 cp/parser.c:36075 cp/parser.c:36163 @@ -36020,10 +35537,9 @@ msgid "collapse argument needs positive constant integer expression" msgstr "l'argument « collapse » a besoin d'une expression entière constante positive" #: c/c-parser.c:11846 cp/parser.c:31914 -#, fuzzy, gcc-internal-format -#| msgid "expected % or %" +#, gcc-internal-format msgid "expected % or %" -msgstr "% ou % attendu" +msgstr "% ou % attendu" #: c/c-parser.c:11848 cp/parser.c:31916 #, gcc-internal-format @@ -36990,7 +36506,7 @@ msgstr "conversion implicite depuis %qT vers %qT pour correspondre à d'autres r #: c/c-typeck.c:5092 c/c-typeck.c:5098 #, gcc-internal-format msgid "operand of ?: changes signedness from %qT to %qT due to unsignedness of other operand" -msgstr "" +msgstr "l'opérande de ?: change de type signé de %qT à %qT à cause du caractère non signé de l'autre opérande" #: c/c-typeck.c:5115 #, gcc-internal-format @@ -37116,10 +36632,9 @@ msgid "ISO C forbids conversion of object pointer to function pointer type" msgstr "le C ISO interdit la conversion d'un pointeur vers un objet en un type de pointeur vers une fonction" #: c/c-typeck.c:5728 -#, fuzzy, gcc-internal-format -#| msgid "can%'t convert from incomplete type %qT to %qT" +#, gcc-internal-format msgid "cast between incompatible function types from %qT to %qT" -msgstr "ne peut convertir du type incomplet %qT vers %qT" +msgstr "transtypage entre des types de fonction incompatibles de %qT vers %qT" #: c/c-typeck.c:5815 #, gcc-internal-format @@ -37154,25 +36669,22 @@ msgstr "%qT attendu mais l'argument est de type %qT" #: c/c-typeck.c:6471 #, gcc-internal-format msgid "enum conversion when passing argument %d of %qE is invalid in C++" -msgstr "la conversion en enum lors du passage de l'argument %d de %qE est invalide en C++" +msgstr "la conversion d'un enum lors du passage de l'argument %d de %qE est invalide en C++" #: c/c-typeck.c:6480 -#, fuzzy, gcc-internal-format -#| msgid "enum conversion in assignment is invalid in C++" +#, gcc-internal-format msgid "enum conversion from %qT to %qT in assignment is invalid in C++" -msgstr "la conversion en enum dans une affectation est invalide en C++" +msgstr "la conversion d'un enum de %qT vers %qT dans une affectation est invalide en C++" #: c/c-typeck.c:6484 -#, fuzzy, gcc-internal-format -#| msgid "enum conversion in initialization is invalid in C++" +#, gcc-internal-format msgid "enum conversion from %qT to %qT in initialization is invalid in C++" -msgstr "la conversion en enum durant l'initialisation est invalide en C++" +msgstr "la conversion d'un enum de %qT vers %qT durant l'initialisation est invalide en C++" #: c/c-typeck.c:6489 -#, fuzzy, gcc-internal-format -#| msgid "enum conversion in return is invalid in C++" +#, gcc-internal-format msgid "enum conversion from %qT to %qT in return is invalid in C++" -msgstr "la conversion en enum durant le retour est invalide en C++" +msgstr "la conversion d'un enum de %qT vers %qT durant le retour est invalide en C++" #: c/c-typeck.c:6523 #, gcc-internal-format @@ -37287,22 +36799,19 @@ msgid "pointer targets in passing argument %d of %qE differ in signedness" msgstr "les cibles pointées dans le passage de l'argument %d de %qE diffèrent dans la plage signée" #: c/c-typeck.c:6913 -#, fuzzy, gcc-internal-format -#| msgid "pointer targets in assignment differ in signedness" +#, gcc-internal-format msgid "pointer targets in assignment from %qT to %qT differ in signedness" -msgstr "les cibles pointées dans l'affectation diffèrent dans la plage signée" +msgstr "les cibles pointées dans l'affectation de %qT vers %qT diffèrent dans la plage signée" #: c/c-typeck.c:6918 -#, fuzzy, gcc-internal-format -#| msgid "pointer targets in initialization differ in signedness" +#, gcc-internal-format msgid "pointer targets in initialization of %qT from %qT differ in signedness" -msgstr "les cibles pointées dans l'initialisation diffèrent dans la plage signée" +msgstr "les cibles pointées dans l'initialisation de %qT depuis %qT diffèrent dans la plage signée" #: c/c-typeck.c:6923 -#, fuzzy, gcc-internal-format -#| msgid "pointer targets in passing argument %d of %qE differ in signedness" +#, gcc-internal-format msgid "pointer targets in returning %qT from a function with return type %qT differ in signedness" -msgstr "les cibles pointées dans le passage de l'argument %d de %qE diffèrent dans la plage signée" +msgstr "les cibles pointées en retournant %qT depuis une fonction qui retourne le type %qT diffèrent dans la plage signée" #: c/c-typeck.c:6961 #, gcc-internal-format @@ -37310,22 +36819,19 @@ msgid "passing argument %d of %qE from incompatible pointer type" msgstr "passage de l'argument %d de %qE depuis un type pointeur incompatible" #: c/c-typeck.c:6967 -#, fuzzy, gcc-internal-format -#| msgid "assignment from incompatible pointer type" +#, gcc-internal-format msgid "assignment to %qT from incompatible pointer type %qT" -msgstr "affectation depuis un type pointeur incompatible" +msgstr "affectation à %qT depuis le type pointeur %qT qui est incompatible" #: c/c-typeck.c:6972 -#, fuzzy, gcc-internal-format -#| msgid "initialization from incompatible pointer type" +#, gcc-internal-format msgid "initialization of %qT from incompatible pointer type %qT" -msgstr "initialisation depuis un type pointeur incompatible" +msgstr "initialisation de %qT depuis le type pointeur %qT qui est incompatible" #: c/c-typeck.c:6977 -#, fuzzy, gcc-internal-format -#| msgid "return with value in function with no return type" +#, gcc-internal-format msgid "returning %qT from a function with incompatible return type %qT" -msgstr "retour avec valeur rencontré dans une fonction sans type de retour" +msgstr "retour de %qT depuis une fonction avec le type de retour %qT qui est incompatible" #. ??? This should not be an error when inlining calls to #. unprototyped functions. @@ -37340,22 +36846,19 @@ msgid "passing argument %d of %qE makes pointer from integer without a cast" msgstr "le passage de l'argument %d de %qE transforme un entier en pointeur sans transtypage" #: c/c-typeck.c:7010 -#, fuzzy, gcc-internal-format -#| msgid "assignment makes pointer from integer without a cast" +#, gcc-internal-format msgid "assignment to %qT from %qT makes pointer from integer without a cast" -msgstr "l'affectation transforme un entier en pointeur sans transtypage" +msgstr "l'affectation à %qT depuis %qT transforme un entier en pointeur sans transtypage" #: c/c-typeck.c:7015 -#, fuzzy, gcc-internal-format -#| msgid "initialization makes pointer from integer without a cast" +#, gcc-internal-format msgid "initialization of %qT from %qT makes pointer from integer without a cast" -msgstr "l'initialisation transforme un entier en pointeur sans transtypage" +msgstr "l'initialisation de %qT depuis %qT transforme un entier en pointeur sans transtypage" #: c/c-typeck.c:7019 -#, fuzzy, gcc-internal-format -#| msgid "passing argument %d of %qE makes pointer from integer without a cast" +#, gcc-internal-format msgid "returning %qT from a function with return type %qT makes pointer from integer without a cast" -msgstr "le passage de l'argument %d de %qE transforme un entier en pointeur sans transtypage" +msgstr "retourner %qT depuis une fonction avec le type de retour %qT transforme un entier en pointeur sans transtypage" #: c/c-typeck.c:7035 #, gcc-internal-format @@ -37363,22 +36866,19 @@ msgid "passing argument %d of %qE makes integer from pointer without a cast" msgstr "le passage de l'argument %d de %qE transforme un pointeur en entier sans transtypage" #: c/c-typeck.c:7041 -#, fuzzy, gcc-internal-format -#| msgid "assignment makes integer from pointer without a cast" +#, gcc-internal-format msgid "assignment to %qT from %qT makes integer from pointer without a cast" -msgstr "l'affectation transforme un pointeur en entier sans transtypage" +msgstr "l'affectation à %qT depuis %qT transforme un pointeur en entier sans transtypage" #: c/c-typeck.c:7046 -#, fuzzy, gcc-internal-format -#| msgid "initialization makes integer from pointer without a cast" +#, gcc-internal-format msgid "initialization of %qT from %qT makes integer from pointer without a cast" -msgstr "l'initialisation transforme un pointeur en entier sans transtypage" +msgstr "l'initialisation de %qT depuis %qT transforme un pointeur en entier sans transtypage" #: c/c-typeck.c:7050 -#, fuzzy, gcc-internal-format -#| msgid "passing argument %d of %qE makes integer from pointer without a cast" +#, gcc-internal-format msgid "returning %qT from a function with return type %qT makes integer from pointer without a cast" -msgstr "le passage de l'argument %d de %qE transforme un pointeur en entier sans transtypage" +msgstr "retourner %qT depuis une fonction qui retourne le type %qT transforme un pointeur en entier sans transtypage" #: c/c-typeck.c:7073 #, gcc-internal-format @@ -38122,10 +37622,9 @@ msgid "%<||%> not valid in GIMPLE" msgstr "%<||%> n'est pas valable en GIMPLE" #: c/gimple-parser.c:588 -#, fuzzy, gcc-internal-format -#| msgid "expected identifier or %<*%>" +#, gcc-internal-format msgid "expected pointer as argument of unary %<*%>" -msgstr "identificateur ou %<*%> attendu" +msgstr "pointeur attendu comme argument au %<*%> unaire" #: c/gimple-parser.c:614 #, gcc-internal-format @@ -38143,16 +37642,14 @@ msgid "base variable or SSA name undeclared" msgstr "variable de base ou nom SSA par déclaré" #: c/gimple-parser.c:715 -#, fuzzy, gcc-internal-format -#| msgid "invalid type % for new" +#, gcc-internal-format msgid "invalid base %qE for SSA name" -msgstr "type % invalide pour « new »" +msgstr "base %qE invalide pour le nom SSA" #: c/gimple-parser.c:835 -#, fuzzy, gcc-internal-format -#| msgid "invalid %%P operand" +#, gcc-internal-format msgid "invalid type of %<__MEM%> operand" -msgstr "opérande %%P invalide" +msgstr "type invalide pour l'opérande de %<__MEM%>" #: c/gimple-parser.c:891 c/gimple-parser.c:899 #, gcc-internal-format @@ -38206,10 +37703,8 @@ msgid " passing %qT as % argument discards qualifiers" msgstr " passer %qT comme argument % élimine les qualificatifs" #: cp/call.c:3410 -#, fuzzy -#| msgid " no known conversion for implicit % parameter from %qT to %qT" msgid " no known conversion for implicit % parameter from %qH to %qI" -msgstr " pas de conversion connue de %qT vers %qT pour le paramètre implicite %" +msgstr " pas de conversion connue de %qH vers %qI pour le paramètre implicite %" #: cp/call.c:3417 #, gcc-internal-format, gfc-internal-format @@ -38218,16 +37713,12 @@ msgstr " la conversion de l'argument %d serait mal formée:" #. Conversion of conversion function return value failed. #: cp/call.c:3424 -#, fuzzy -#| msgid " no known conversion from %qT to %qT" msgid " no known conversion from %qH to %qI" -msgstr " pas de conversion connue pour convertir %qT en %qT" +msgstr " pas de conversion connue pour convertir %qH en %qI" #: cp/call.c:3427 -#, fuzzy -#| msgid " no known conversion for argument %d from %qT to %qT" msgid " no known conversion for argument %d from %qH to %qI" -msgstr " pas de conversion connue pour convertir l'argument %d depuis %qT vers %qT" +msgstr " pas de conversion connue pour convertir l'argument %d depuis %qH vers %qI" #: cp/call.c:3438 cp/pt.c:6318 #, gcc-internal-format, gfc-internal-format @@ -38237,46 +37728,39 @@ msgstr[0] " le candidat attend %d argument, %d fourni(s)" msgstr[1] " le candidat attend %d arguments, %d fourni(s)" #: cp/call.c:3466 -#, fuzzy, gcc-internal-format -#| msgid "%s%D(%T, %T, %T) " +#, gcc-internal-format msgid "%s%<%D(%T, %T, %T)%> " -msgstr "%s%D(%T, %T, %T) " +msgstr "%s%<%D(%T, %T, %T)%> " #: cp/call.c:3471 -#, fuzzy, gcc-internal-format -#| msgid "%s%D(%T, %T) " +#, gcc-internal-format msgid "%s%<%D(%T, %T)%> " -msgstr "%s%D(%T, %T) " +msgstr "%s%<%D(%T, %T)%> " #: cp/call.c:3475 -#, fuzzy, gcc-internal-format -#| msgid "%s%D(%T) " +#, gcc-internal-format msgid "%s%<%D(%T)%> " -msgstr "%s%D(%T) " +msgstr "%s%<%D(%T)%> " #: cp/call.c:3479 -#, fuzzy, gcc-internal-format -#| msgid "%s%T " +#, gcc-internal-format msgid "%s%qT " -msgstr "%s%T " +msgstr "%s%qT " #: cp/call.c:3481 -#, fuzzy, gcc-internal-format -#| msgid "%s%#D " +#, gcc-internal-format msgid "%s%#qD " -msgstr "%s%#D " +msgstr "%s%#qD " #: cp/call.c:3483 -#, fuzzy, gcc-internal-format -#| msgid "%s%#D " +#, gcc-internal-format msgid "%s%#qD " -msgstr "%s%#D " +msgstr "%s%#qD " #: cp/call.c:3485 -#, fuzzy, gcc-internal-format -#| msgid "%s%#D" +#, gcc-internal-format msgid "%s%#qD" -msgstr "%s%#D" +msgstr "%s%#qD" #: cp/call.c:3489 #, gcc-internal-format @@ -38315,20 +37799,16 @@ msgid " an inherited constructor is not a candidate for initialization from an msgstr " un constructeur hérité n'est pas un candidat pour une initialisation depuis une expression du même type ou d'un type dérivé" #: cp/call.c:3934 -#, fuzzy -#| msgid "conversion from %qT to %qT is ambiguous" msgid "conversion from %qH to %qI is ambiguous" -msgstr "la conversion de %qT vers %qT est ambiguë" +msgstr "la conversion de %qH vers %qI est ambiguë" #: cp/call.c:4078 msgid "initializing %qH with %qI in converted constant expression does not bind directly" -msgstr "" +msgstr "initialiser %qH avec %qI dans une expression constante convertie n'est pas liée directement" #: cp/call.c:4099 -#, fuzzy -#| msgid "conversion of %qT null pointer to %qT is not a constant expression" msgid "conversion from %qH to %qI in a converted constant expression" -msgstr "la conversion du pointeur nul %qT vers %qT n'est pas une expression constante" +msgstr "conversion de %qH vers %qI dans une expression constante convertie" #: cp/call.c:4236 #, gcc-internal-format @@ -38343,10 +37823,9 @@ msgstr "appel ambigu à la surcharge %<%D(%A)%>" #. It's no good looking for an overloaded operator() on a #. pointer-to-member-function. #: cp/call.c:4474 -#, fuzzy, gcc-internal-format -#| msgid "pointer-to-member function %E cannot be called without an object; consider using .* or ->*" +#, gcc-internal-format msgid "pointer-to-member function %qE cannot be called without an object; consider using %<.*%> or %<->*%>" -msgstr "le pointeur vers la fonction membre %E ne peut être appelé sans un objet; utilisez .* ou ->*" +msgstr "le pointeur vers la fonction membre %qE ne peut être appelé sans un objet; utilisez %<.*%> ou %<->*%>" #: cp/call.c:4545 #, gcc-internal-format @@ -38444,10 +37923,8 @@ msgid "inferred scalar type %qT is not an integer or floating point type of the msgstr "le type scalaire inféré %qT n'est pas un type entier ou en virgule flottante de la même taille que %qT" #: cp/call.c:4878 cp/call.c:4885 -#, fuzzy -#| msgid "conversion of scalar %qT to vector %qT involves truncation" msgid "conversion of scalar %qH to vector %qI involves truncation" -msgstr "la conversion du scalaire %qT vers le vecteur %qT implique une troncature" +msgstr "la conversion du scalaire %qH vers le vecteur %qI implique une troncature" #: cp/call.c:4938 #, gcc-internal-format @@ -38475,10 +37952,8 @@ msgid " and each type can be converted to the other" msgstr " et chaque type peut être converti en l'autre" #: cp/call.c:5274 -#, fuzzy -#| msgid "implicit conversion from %qT to %qT to match other result of conditional" msgid "implicit conversion from %qH to %qI to match other result of conditional" -msgstr "conversion implicite depuis %qT vers %qT pour correspondre à d'autres résultats de la condition" +msgstr "conversion implicite depuis %qH vers %qI pour correspondre à d'autres résultats de la condition" #: cp/call.c:5287 #, gcc-internal-format @@ -38581,16 +38056,12 @@ msgid "too many braces around initializer for %qT" msgstr "trop d'accolades autour de l'initialiseur pour %qT" #: cp/call.c:6665 -#, fuzzy -#| msgid "converting to %qT from %qT requires direct-initialization" msgid "converting to %qH from %qI requires direct-initialization" -msgstr "la conversion vers %qT depuis %qT requiert une initialisation directe" +msgstr "la conversion vers %qH depuis %qI requiert une initialisation directe" #: cp/call.c:6673 -#, fuzzy -#| msgid "invalid user-defined conversion from %qT to %qT" msgid "invalid user-defined conversion from %qH to %qI" -msgstr "la conversion définie par l'utilisateur de %qT vers %qT est invalide" +msgstr "la conversion définie par l'utilisateur de %qH vers %qI est invalide" #: cp/call.c:6690 cp/call.c:6714 cp/call.c:6833 cp/call.c:6924 cp/call.c:6975 #: cp/call.c:7003 @@ -38599,10 +38070,8 @@ msgid " initializing argument %P of %qD" msgstr " initialisation de l'argument %P de %qD" #: cp/call.c:6710 cp/cvt.c:226 -#, fuzzy -#| msgid "invalid conversion from %qT to %qT" msgid "invalid conversion from %qH to %qI" -msgstr "conversion invalide de %qT vers %qT" +msgstr "conversion invalide de %qH vers %qI" #: cp/call.c:6751 cp/call.c:6758 #, gcc-internal-format @@ -38615,22 +38084,16 @@ msgid "in C++11 and above a default constructor can be explicit" msgstr "en C++11 et au delà, un constructeur par défaut peut être explicite" #: cp/call.c:6989 -#, fuzzy -#| msgid "cannot bind rvalue reference of type %qT to lvalue of type %qT" msgid "cannot bind rvalue reference of type %qH to lvalue of type %qI" -msgstr "impossible de lier la référence d'une r-valeur de type %qT à une l-valeur de type %qT" +msgstr "impossible de lier la référence d'une r-valeur de type %qH à une l-valeur de type %qI" #: cp/call.c:6993 -#, fuzzy -#| msgid "cannot bind non-const lvalue reference of type %qT to an rvalue of type %qT" msgid "cannot bind non-const lvalue reference of type %qH to an rvalue of type %qI" -msgstr "impossible de lier la référence d'une l-valeur non constante de type %qT à une r-valeur de type %qT" +msgstr "impossible de lier la référence d'une l-valeur non constante de type %qH à une r-valeur de type %qI" #: cp/call.c:6996 -#, fuzzy -#| msgid "binding reference of type %qT to %qT discards qualifiers" msgid "binding reference of type %qH to %qI discards qualifiers" -msgstr "lier la référence du type %qT à %qT abandonne les qualificatifs" +msgstr "lier la référence du type %qH à %qI abandonne les qualificatifs" #: cp/call.c:7032 #, gcc-internal-format @@ -38648,10 +38111,8 @@ msgid "cannot bind rvalue %qE to %qT" msgstr "ne peut lier la r-valeur %qE avec %qT" #: cp/call.c:7148 -#, fuzzy -#| msgid "implicit conversion from %qT to %qT when passing argument to function" msgid "implicit conversion from %qH to %qI when passing argument to function" -msgstr "conversion implicite de %qT en %qT lors du passage de l'argument à la fonction" +msgstr "conversion implicite de %qH en %qI lors du passage de l'argument à la fonction" #: cp/call.c:7165 cp/cvt.c:1867 #, gcc-internal-format @@ -38726,139 +38187,127 @@ msgstr "passage des arguments à l'élision du constructeur hérité %qD" #: cp/call.c:8472 #, gcc-internal-format msgid "%qD writing to an object of type %#qT with no trivial copy-assignment" -msgstr "" +msgstr "écriture %qD vers un objet de type %#qT sans affectation par copie triviale" #: cp/call.c:8475 -#, fuzzy, gcc-internal-format -#| msgid "conversion to void will not access object of non-trivially-copyable type %qT" +#, gcc-internal-format msgid "%qD writing to an object of non-trivial type %#qT%s" -msgstr "la conversion vers void n'accèdera pas à l'objet du type non trivialement copiable %qT" +msgstr "écriture %qD vers un objet de type non trivial %#qT%s" #: cp/call.c:8480 #, gcc-internal-format msgid "%qD writing to an object of type %#qT with %qs member %qD" -msgstr "" +msgstr "écriture %qD vers un objet de type %#qT avec le membre %qs de %qD" #: cp/call.c:8485 #, gcc-internal-format msgid "%qD writing to an object of type %#qT containing a pointer to data member%s" -msgstr "" +msgstr "écriture %qD vers un objet de type %#qT contenant un pointer vers le membre de donnée%s" #: cp/call.c:8500 -#, fuzzy, gcc-internal-format -#| msgid "assignment (not initialization) in declaration" +#, gcc-internal-format msgid "; use assignment or value-initialization instead" -msgstr "affectation (pas une initialisation) dans la déclaration" +msgstr "; utilisez plutôt une affectation ou une initialisation par valeur" #: cp/call.c:8502 -#, fuzzy, gcc-internal-format -#| msgid "use #include instead" +#, gcc-internal-format msgid "; use assignment instead" -msgstr "utilisez #include à la place" +msgstr "; utilisez plutôt une affectation" #: cp/call.c:8504 -#, fuzzy, gcc-internal-format -#| msgid "value-initialization of function type %qT" +#, gcc-internal-format msgid "; use value-initialization instead" -msgstr "initialisation par valeur du type fonction %qT" +msgstr "; utilisez plutôt une initialisation par valeur" #: cp/call.c:8507 #, gcc-internal-format msgid "%qD clearing an object of type %#qT with no trivial copy-assignment%s" -msgstr "" +msgstr "%qD effacement d'un objet de type %#qT sans affectation par copie triviale%s" #: cp/call.c:8510 -#, fuzzy, gcc-internal-format -#| msgid "creating pointer to member of non-class type %qT" +#, gcc-internal-format msgid "%qD clearing an object of non-trivial type %#qT%s" -msgstr "création d'un pointeur vers le membre d'un type non classe %qT" +msgstr "%qD effacement d'un objet du type non trivial %#qT%s" #: cp/call.c:8512 #, gcc-internal-format msgid "%qD clearing an object of type %#qT containing a pointer-to-member%s" -msgstr "" +msgstr "%qD effacement d'un objet de type %#qT contenant un pointeur vers un membre%s" #: cp/call.c:8533 -#, fuzzy, gcc-internal-format -#| msgid "assignment (not initialization) in declaration" +#, gcc-internal-format msgid "; use copy-assignment or copy-initialization instead" -msgstr "affectation (pas une initialisation) dans la déclaration" +msgstr "; utilisez plutôt une affectation par copie ou une initialisation par copie" #: cp/call.c:8535 -#, fuzzy, gcc-internal-format -#| msgid "use #include instead" +#, gcc-internal-format msgid "; use copy-assignment instead" -msgstr "utilisez #include à la place" +msgstr "; utilisez plutôt une affectation par copie" #: cp/call.c:8537 -#, fuzzy, gcc-internal-format -#| msgid "re-initialization of %qs at %L" +#, gcc-internal-format msgid "; use copy-initialization instead" -msgstr "ré-initialisation de %qs à %L" +msgstr "; utilisez plutôt une initialisation par copie" #: cp/call.c:8540 #, gcc-internal-format msgid "%qD writing to an object of type %#qT with no trivial copy-assignment%s" -msgstr "" +msgstr "%qD écriture dans un objet de type %#qT sans affectation par copie triviale%s" #: cp/call.c:8543 -#, fuzzy, gcc-internal-format -#| msgid "conversion to void will not access object of non-trivially-copyable type %qT" +#, gcc-internal-format msgid "%qD writing to an object of non-trivially copyable type %#qT%s" -msgstr "la conversion vers void n'accèdera pas à l'objet du type non trivialement copiable %qT" +msgstr "%qD écriture dans un objet du type non trivialement copiable %#qT%s" #: cp/call.c:8546 #, gcc-internal-format msgid "%qD writing to an object with a deleted copy constructor" -msgstr "" +msgstr "%qD écriture dans un objet avec un constructeur par copie supprimé" #: cp/call.c:8557 #, gcc-internal-format msgid "%qD copying an object of non-trivial type %#qT from an array of %#qT" -msgstr "" +msgstr "%qD copie un objet du type non trivial %#qT depuis un tableau de %#qT" #: cp/call.c:8569 #, gcc-internal-format msgid "%qD copying an object of type %#qT with %qs member %qD from an array of %#qT; use assignment or copy-initialization instead" -msgstr "" +msgstr "%qD copie un objet de type %#qT avec le membre %qs de %qD depuis un tableau de %#qT; utilisez plutôt une affectation ou une initialisation par copie" #: cp/call.c:8586 #, gcc-internal-format msgid "%qD writing to an object of a non-trivial type %#qT leaves %wu bytes unchanged" -msgstr "" +msgstr "%qD écriture dans un objet du type non trivial %#qT laisse %wu octets inchangés" #: cp/call.c:8589 #, gcc-internal-format msgid "%qD writing to an object of a non-trivial type %#qT leaves %wu byte unchanged" -msgstr "" +msgstr "%qD écriture dans un objet du type non trivial %#qT laisse %wu octet inchangé" #: cp/call.c:8599 -#, fuzzy, gcc-internal-format -#| msgid "receiving objects of non-trivially-copyable type %q#T through %<...%> is conditionally-supported" +#, gcc-internal-format msgid "%qD moving an object of non-trivially copyable type %#qT; use % and % instead" -msgstr "la réception d'objets du type %q#T non trivialement copiables au travers de %<...%> est supporté conditionnellement" +msgstr "%qD déplacement d'un objet du type non trivialement copiable %#qT; utilisez plutôt % et %" #: cp/call.c:8602 #, gcc-internal-format msgid "%qD moving an object of type %#qT with deleted copy constructor; use % and % instead" -msgstr "" +msgstr "%qD déplacement d'un objet de type %#qT avec un constructeur par copie supprimé; utilisez plutôt % et %" #: cp/call.c:8605 #, gcc-internal-format msgid "%qD moving an object of type %#qT with deleted destructor" -msgstr "" +msgstr "%qD déplacement d'un objet de type %#qT avec un destructeur supprimé" #: cp/call.c:8614 -#, fuzzy, gcc-internal-format -#| msgid "placement new constructing an object of type %qT and size %qwu in a region of type %qT and size %qwi" +#, gcc-internal-format msgid "%qD moving an object of non-trivial type %#qT and size %E into a region of size %E" -msgstr "l'opérateur « new » avec placement construit un objet de type %qT et de taille %qwu dans une région de type %qT et de taille %qwi" +msgstr "%qD déplacement d'un objet du type non trivial %#qT et de taille %E dans une région de taille %E" #: cp/call.c:8636 -#, fuzzy, gcc-internal-format -#| msgid "%qT declared here" +#, gcc-internal-format msgid "%#qT declared here" -msgstr "%qT déclaré ici" +msgstr "%#qT déclaré ici" #: cp/call.c:8732 #, gcc-internal-format @@ -38886,10 +38335,9 @@ msgid "no matching function for call to %<%T::operator %T(%A)%#V%>" msgstr "pas de fonction concordante pour l'appel à %<%T::operator %T(%A)%#V%>" #: cp/call.c:9172 -#, fuzzy, gcc-internal-format -#| msgid "no matching function for call to %<%T::%E(%A)%#V%>" +#, gcc-internal-format msgid "no matching function for call to %<%T::%s%E(%A)%#V%>" -msgstr "pas de fonction concordante pour l'appel à %<%T::%E(%A)%#V%>" +msgstr "pas de fonction concordante pour l'appel à %<%T::%s%E(%A)%#V%>" #: cp/call.c:9196 #, gcc-internal-format @@ -38932,10 +38380,8 @@ msgid "choosing %qD over %qD" msgstr "choix de %qD à la place de %qD" #: cp/call.c:10096 -#, fuzzy -#| msgid " for conversion from %qT to %qT" msgid " for conversion from %qH to %qI" -msgstr " pour la conversion de %qT vers %qT" +msgstr " pour la conversion de %qH vers %qI" #: cp/call.c:10099 #, gcc-internal-format @@ -38963,10 +38409,8 @@ msgid "ISO C++ says that these are ambiguous, even though the worst conversion f msgstr "le C++ ISO indique que ceux-ci sont ambigus même si la plus mauvaise conversion pour le premier est meilleures que la plus mauvaise conversion pour le second:" #: cp/call.c:10557 -#, fuzzy -#| msgid "could not convert %qE from %qT to %qT" msgid "could not convert %qE from %qH to %qI" -msgstr "impossible de convertir %qE de %qT vers %qT" +msgstr "impossible de convertir %qE de %qH vers %qI" #: cp/call.c:10759 #, gcc-internal-format @@ -38974,16 +38418,12 @@ msgid "a temporary bound to %qD only persists until the constructor exits" msgstr "une limite temporaire sur %qD existe uniquement jusqu'à la sortie du constructeur" #: cp/call.c:10882 -#, fuzzy -#| msgid "invalid initialization of non-const reference of type %qT from an rvalue of type %qT" msgid "invalid initialization of non-const reference of type %qH from an rvalue of type %qI" -msgstr "initialisation invalide pour une référence non constante du type %qT à partir d'une r-valeur de type %qT" +msgstr "initialisation invalide pour une référence non constante du type %qH à partir d'une r-valeur de type %qI" #: cp/call.c:10886 -#, fuzzy -#| msgid "invalid initialization of reference of type %qT from expression of type %qT" msgid "invalid initialization of reference of type %qH from expression of type %qI" -msgstr "initialisation invalide pour une référence du type %qT à partir d'une expression de type %qT" +msgstr "initialisation invalide pour une référence du type %qH à partir d'une expression de type %qI" #: cp/class.c:324 #, gcc-internal-format @@ -39007,22 +38447,19 @@ msgstr "impossible de convertir depuis la classe de base %qT vers la classe dér # ce message apparaît juste après le %q#D ci-dessus #: cp/class.c:1129 -#, fuzzy, gcc-internal-format -#| msgid "conflicts with version inherited from %qT" +#, gcc-internal-format msgid "%q#D conflicts with version inherited from %qT" -msgstr "est en conflit avec la version héritée de %qT" +msgstr "%q#D est en conflit avec la version héritée de %qT" #: cp/class.c:1132 -#, fuzzy, gcc-internal-format -#| msgid "routine %qD declared here" +#, gcc-internal-format msgid "version inherited from %qT declared here" -msgstr "la routine %qD est déclarée ici" +msgstr "la version héritée de %qT est déclarée ici" #: cp/class.c:1152 -#, fuzzy, gcc-internal-format -#| msgid "%q+#D cannot be overloaded" +#, gcc-internal-format msgid "%q#D cannot be overloaded with %q#D" -msgstr "%q+#D ne peut pas être surchargé" +msgstr "%q#D ne peut pas être surchargé par %q#D" #: cp/class.c:1154 cp/decl.c:1640 cp/decl.c:1661 cp/decl.c:1693 #: cp/name-lookup.c:2300 cp/name-lookup.c:2584 @@ -39041,28 +38478,24 @@ msgid "conflicting access specifications for field %qE, ignored" msgstr "spécifications d'accès conflictuelles pour le champ %qE, ignoré" #: cp/class.c:1265 -#, fuzzy, gcc-internal-format -#| msgid " because of local method %q+#D with same name" +#, gcc-internal-format msgid "%qD invalid in %q#T because of local method %q#D with same name" -msgstr " à cause de la méthode locale %q+#D avec le même nom" +msgstr "%qD invalide dans %q#T à cause de la méthode locale %q#D avec le même nom" #: cp/class.c:1269 -#, fuzzy, gcc-internal-format -#| msgid "in call to %qD, declared here" +#, gcc-internal-format msgid "local method %q#D declared here" -msgstr "dans l'appel à %qD, déclaré ici" +msgstr "méthode locale %q#D, déclarée ici" #: cp/class.c:1275 -#, fuzzy, gcc-internal-format -#| msgid " because of local member %q+#D with same name" +#, gcc-internal-format msgid "%qD invalid in %q#T because of local member %q#D with same name" -msgstr " à cause du membre local %q+#D avec le même nom" +msgstr "%qD invalide dans %q#T à cause du membre local %q#D avec le même nom" #: cp/class.c:1279 -#, fuzzy, gcc-internal-format -#| msgid "array member %q#D declared here" +#, gcc-internal-format msgid "local member %q#D declared here" -msgstr "membre tableau %q#D déclaré ici" +msgstr "membre local %q#D déclaré ici" #: cp/class.c:1334 #, gcc-internal-format @@ -39113,7 +38546,7 @@ msgstr "%q#T définit uniquement des constructeurs privés et n'a pas d'amis" #: cp/class.c:2168 #, gcc-internal-format msgid "%q#D is public, but requires an existing %q#T object" -msgstr "" +msgstr "%q#D est public mais requiert un objet %q#T existant" #: cp/class.c:2442 #, gcc-internal-format @@ -39321,10 +38754,9 @@ msgid "method declared %qE overriding %qE method" msgstr "la méthode déclarée %qE surcharge la méthode %qE" #: cp/class.c:5373 cp/constexpr.c:230 -#, fuzzy, gcc-internal-format -#| msgid "enclosing class of constexpr non-static member function %q+#D is not a literal type" +#, gcc-internal-format msgid "enclosing class of % non-static member function %q+#D is not a literal type" -msgstr "la classe englobant la fonction membre non statique « constexpr » %q+#D n'est pas un type littéral" +msgstr "la classe englobant la fonction membre non statique % %q+#D n'est pas un type littéral" #: cp/class.c:5397 #, gcc-internal-format @@ -39334,7 +38766,7 @@ msgstr "%q+T n'est pas littéral à cause de:" #: cp/class.c:5400 #, gcc-internal-format msgid " %qT is a closure type, which is only literal in C++17 and later" -msgstr "" +msgstr " %qT est un type de fermeture qui n'est un littéral qu'à partir du C++17" #: cp/class.c:5403 #, gcc-internal-format @@ -39342,10 +38774,9 @@ msgid " %q+T has a non-trivial destructor" msgstr " %q+T a un destructeur non trivial" #: cp/class.c:5410 -#, fuzzy, gcc-internal-format -#| msgid " %q+T is not an aggregate, does not have a trivial default constructor, and has no constexpr constructor that is not a copy or move constructor" +#, gcc-internal-format msgid " %q+T is not an aggregate, does not have a trivial default constructor, and has no % constructor that is not a copy or move constructor" -msgstr " %q+T n'est pas un agrégat, n'a pas de constructeur par défaut trivial et n'a pas de constructeur « constexpr » qui n'est pas un constructeur de copie ou par déplacement" +msgstr " %q+T n'est pas un agrégat, n'a pas de constructeur par défaut trivial et n'a pas de constructeur % qui n'est pas un constructeur de copie ou par déplacement" #: cp/class.c:5443 #, gcc-internal-format @@ -39547,10 +38978,9 @@ msgid "changes meaning of %qD from %q#D" msgstr "change la signification de %qD depuis %q#D" #: cp/constexpr.c:98 -#, fuzzy, gcc-internal-format -#| msgid "the type %qT of constexpr variable %qD is not literal" +#, gcc-internal-format msgid "the type %qT of % variable %qD is not literal" -msgstr "le type %qT de la variable constexpr %qD n'est pas littéral" +msgstr "le type %qT de la variable % %qD n'est pas littéral" #: cp/constexpr.c:107 #, gcc-internal-format @@ -39558,27 +38988,24 @@ msgid "variable %qD of non-literal type %qT in % function" msgstr "la variable %qD du type non littéral %qT dans la fonction %" #: cp/constexpr.c:182 -#, fuzzy, gcc-internal-format -#| msgid "inherited constructor %qD is not constexpr" +#, gcc-internal-format msgid "inherited constructor %qD is not %" -msgstr "le constructeur hérité %qD n'est pas constexpr" +msgstr "le constructeur hérité %qD n'est pas %" #: cp/constexpr.c:194 -#, fuzzy, gcc-internal-format -#| msgid "invalid type for parameter %d of constexpr function %q+#D" +#, gcc-internal-format msgid "invalid type for parameter %d of % function %q+#D" -msgstr "type invalide pour le paramètre %d de la fonction constexpr %q+#D" +msgstr "type invalide pour le paramètre %d de la fonction % %q+#D" #: cp/constexpr.c:206 #, gcc-internal-format msgid "lambdas are implicitly % only in C++17 and later" -msgstr "" +msgstr "les lambdas ne sont implicitement % qu'à partir du C++17" #: cp/constexpr.c:216 -#, fuzzy, gcc-internal-format -#| msgid "invalid return type %qT of constexpr function %q+D" +#, gcc-internal-format msgid "invalid return type %qT of % function %q+D" -msgstr "type retourné %qT invalide pour la fonction constexpr %q+D" +msgstr "type retourné %qT invalide pour la fonction % %q+D" #: cp/constexpr.c:239 #, gcc-internal-format @@ -39586,10 +39013,9 @@ msgid "%q#T has virtual base classes" msgstr "%q#T a des classes virtuelles de base" #: cp/constexpr.c:500 -#, fuzzy, gcc-internal-format -#| msgid "constexpr constructor does not have empty body" +#, gcc-internal-format msgid "% constructor does not have empty body" -msgstr "le constructeur constexpr n'a pas de corps vide" +msgstr "le constructeur % n'a pas de corps vide" #: cp/constexpr.c:606 #, gcc-internal-format @@ -39607,22 +39033,19 @@ msgid "member %qD must be initialized by mem-initializer in % constr msgstr "le membre %qD doit être initialisé par l'initialisation des membres dans le constructeur %" #: cp/constexpr.c:852 -#, fuzzy, gcc-internal-format -#| msgid "body of constexpr function %qD not a return-statement" +#, gcc-internal-format msgid "body of % function %qD not a return-statement" -msgstr "le corps de la fonction constexpr %qD n'est pas une unique instruction « return »" +msgstr "le corps de la fonction % %qD n'est pas une unique instruction « return »" #: cp/constexpr.c:913 -#, fuzzy, gcc-internal-format -#| msgid "%qD is not usable as a constexpr function because:" +#, gcc-internal-format msgid "%qD is not usable as a % function because:" -msgstr "%qD n'est pas utilisable comme une fonction constexpr car:" +msgstr "%qD n'est pas utilisable comme une fonction % car:" #: cp/constexpr.c:1202 cp/constexpr.c:1708 -#, fuzzy, gcc-internal-format -#| msgid "constexpr call flows off the end of the function" +#, gcc-internal-format msgid "% call flows off the end of the function" -msgstr "l'appel constexpr déborde au delà de la fin de la fonction" +msgstr "l'appel % déborde au delà de la fin de la fonction" #: cp/constexpr.c:1207 cp/constexpr.c:1217 cp/constexpr.c:1812 #, gcc-internal-format @@ -39635,16 +39058,14 @@ msgid "call to internal function %qE" msgstr "appel à la fonction interne %qE" #: cp/constexpr.c:1472 -#, fuzzy, gcc-internal-format -#| msgid "expression %qE does not designate a constexpr function" +#, gcc-internal-format msgid "expression %qE does not designate a % function" -msgstr "l'expression %qE ne désigne pas une fonction constexpr" +msgstr "l'expression %qE ne désigne pas une fonction %" #: cp/constexpr.c:1491 cp/constexpr.c:5271 -#, fuzzy, gcc-internal-format -#| msgid "call to non-constexpr function %qD" +#, gcc-internal-format msgid "call to non-% function %qD" -msgstr "appel à la fonction non constexpr %qD" +msgstr "appel à la fonction non % %qD" #: cp/constexpr.c:1563 #, gcc-internal-format @@ -39667,10 +39088,9 @@ msgid "call has circular dependency" msgstr "l'appel a une dépendance circulaire" #: cp/constexpr.c:1625 -#, fuzzy, gcc-internal-format -#| msgid "constexpr evaluation depth exceeds maximum of %d (use -fconstexpr-depth= to increase the maximum)" +#, gcc-internal-format msgid "% evaluation depth exceeds maximum of %d (use -fconstexpr-depth= to increase the maximum)" -msgstr "la profondeur d'évaluation de la constexpr dépasse le maximum permis %d (utilisez -fconstexpr-depth= pour augmenter le maximum)" +msgstr "la profondeur d'évaluation de la % dépasse le maximum permis %d (utilisez -fconstexpr-depth= pour augmenter le maximum)" #: cp/constexpr.c:1852 #, gcc-internal-format @@ -39789,10 +39209,9 @@ msgid "modification of %qE is not a constant expression" msgstr "la modification de %qE n'est pas une expression constante" #: cp/constexpr.c:3897 -#, fuzzy, gcc-internal-format -#| msgid "constexpr loop iteration count exceeds limit of %d (use -fconstexpr-loop-limit= to increase the limit)" +#, gcc-internal-format msgid "% loop iteration count exceeds limit of %d (use -fconstexpr-loop-limit= to increase the limit)" -msgstr "le décompte des itérations de la boucle constexpr dépasse la limite permise %d (utilisez -fconstexpr-loop-limit= pour augmenter la limite)" +msgstr "le décompte des itérations de la boucle % dépasse la limite permise %d (utilisez -fconstexpr-loop-limit= pour augmenter la limite)" #: cp/constexpr.c:4036 #, gcc-internal-format @@ -39855,15 +39274,14 @@ msgid "expression %qE has side-effects" msgstr "l'expression %qE à des effets de bord" #: cp/constexpr.c:5354 -#, fuzzy, gcc-internal-format -#| msgid "modification of %qE is not a constant expression" +#, gcc-internal-format msgid "lambda capture of %qE is not a constant expression" -msgstr "la modification de %qE n'est pas une expression constante" +msgstr "la capture lambda de %qE n'est pas une expression constante" #: cp/constexpr.c:5357 #, gcc-internal-format msgid "because it is used as a glvalue" -msgstr "" +msgstr "car il est utilisé comme gl-valeur" #: cp/constexpr.c:5392 #, gcc-internal-format @@ -39881,10 +39299,9 @@ msgid "use of % in a constant expression" msgstr "utilisation de % dans une expression constante" #: cp/constexpr.c:5542 -#, fuzzy, gcc-internal-format -#| msgid "lambda-expression in a constant expression" +#, gcc-internal-format msgid "lambda-expression is not a constant expression before C++17" -msgstr "expression lambda dans une expression constante" +msgstr "expression lambda dans une expression constante avant C++17" #: cp/constexpr.c:5605 #, gcc-internal-format @@ -39897,16 +39314,14 @@ msgid "cast to non-integral type %qT in a constant expression" msgstr "transtypage vers le type non entier %qT dans une expression constante" #: cp/constexpr.c:5699 -#, fuzzy, gcc-internal-format -#| msgid "%qD declared % in % function" +#, gcc-internal-format msgid "%qD declared % in % context" -msgstr "%qD déclaré % dans une fonction %" +msgstr "%qD déclaré % dans un contexte %" #: cp/constexpr.c:5706 -#, fuzzy, gcc-internal-format -#| msgid "%qD declared % in % function" +#, gcc-internal-format msgid "%qD declared % in % context" -msgstr "%qD déclaré % dans une fonction %" +msgstr "%qD déclaré % dans un contexte %" #: cp/constexpr.c:5778 #, gcc-internal-format @@ -39949,22 +39364,16 @@ msgid "in C++11 this throw will terminate because destructors default to noexcep msgstr "en C++11, ce throw sera terminal car les destructeurs sont noexcept par défaut" #: cp/cvt.c:91 -#, fuzzy -#| msgid "can%'t convert from incomplete type %qT to %qT" msgid "can%'t convert from incomplete type %qH to %qI" -msgstr "ne peut convertir du type incomplet %qT vers %qT" +msgstr "ne peut convertir du type incomplet %qH vers %qI" #: cp/cvt.c:101 -#, fuzzy -#| msgid "conversion of %qE from %qT to %qT is ambiguous" msgid "conversion of %qE from %qH to %qI is ambiguous" -msgstr "la conversion de %qE à partir de %qT vers %qT est ambiguë" +msgstr "la conversion de %qE à partir de %qH vers %qI est ambiguë" #: cp/cvt.c:173 cp/cvt.c:200 cp/cvt.c:249 -#, fuzzy -#| msgid "cannot convert %qE from type %qT to type %qT" msgid "cannot convert %qE from type %qH to type %qI" -msgstr "impossible de convertir %qE du type %qT vers le type %qT" +msgstr "impossible de convertir %qE du type %qH vers le type %qI" #: cp/cvt.c:384 #, gcc-internal-format @@ -39987,10 +39396,8 @@ msgid "conversion to non-const reference type %q#T from rvalue of type %qT" msgstr "conversion vers le type référencé non const %q#T depuis une r-valeur du type %qT" #: cp/cvt.c:469 -#, fuzzy -#| msgid "conversion from %qT to %qT discards qualifiers" msgid "conversion from %qH to %qI discards qualifiers" -msgstr "la conversion depuis %qT vers %qT écarte les qualificatifs" +msgstr "la conversion depuis %qH vers %qI écarte les qualificatifs" #: cp/cvt.c:491 cp/typeck.c:7327 #, gcc-internal-format @@ -39998,10 +39405,8 @@ msgid "casting %qT to %qT does not dereference pointer" msgstr "le transtypage de %qT vers %qT ne déréférence pas le pointeur" #: cp/cvt.c:519 -#, fuzzy -#| msgid "cannot convert type %qT to type %qT" msgid "cannot convert type %qH to type %qI" -msgstr "ne peut convertir le type %qT vers le type %qT" +msgstr "ne peut convertir le type %qH vers le type %qI" #: cp/cvt.c:757 #, gcc-internal-format @@ -40029,10 +39434,8 @@ msgid "%q#T used where a floating point value was expected" msgstr "%q#T utilisé là où une valeur en virgule flottante était attendue" #: cp/cvt.c:912 -#, fuzzy -#| msgid "conversion from %qT to non-scalar type %qT requested" msgid "conversion from %qH to non-scalar type %qI requested" -msgstr "conversion de %qT vers le type non scalaire %qT demandée" +msgstr "conversion de %qH vers le type non scalaire %qI demandée" #: cp/cvt.c:992 #, gcc-internal-format @@ -40315,10 +39718,9 @@ msgid "template-parameter-" msgstr "paramètre-patron-" #: cp/decl.c:678 -#, fuzzy, gcc-internal-format -#| msgid "invalid initializer for structured binding declaration" +#, gcc-internal-format msgid "unused structured binding declaration" -msgstr "initialisation invalide pour la déclaration de liaison structurée" +msgstr "déclaration de liaison structurée inutilisée" #: cp/decl.c:681 #, gcc-internal-format @@ -40328,7 +39730,7 @@ msgstr "variable %qD inutilisée" #: cp/decl.c:690 #, gcc-internal-format msgid "structured binding declaration set but not used" -msgstr "" +msgstr "déclaration de liaison structurée définie mais pas utilisée" #: cp/decl.c:909 #, gcc-internal-format @@ -40396,10 +39798,9 @@ msgid "previous declaration of %qD was here" msgstr "la déclaration précédente de %qD était ici" #: cp/decl.c:1438 -#, fuzzy, gcc-internal-format -#| msgid "built-in function %q+D declared as non-function" +#, gcc-internal-format msgid "built-in function %qD declared as non-function" -msgstr "la fonction interne %q+D est déclarée comme une non fonction" +msgstr "la fonction interne %qD est déclarée comme une non fonction" #: cp/decl.c:1450 cp/decl.c:1550 #, gcc-internal-format @@ -40432,10 +39833,9 @@ msgid "previous % declaration" msgstr "déclaration % précédente" #: cp/decl.c:1532 -#, fuzzy, gcc-internal-format -#| msgid "declaration of %q+#D conflicts with built-in declaration %q#D" +#, gcc-internal-format msgid "declaration of %q#D conflicts with built-in declaration %q#D" -msgstr "la déclaration de %q+#D est en conflit avec la déclaration interne %q#D" +msgstr "la déclaration de %q#D est en conflit avec la déclaration interne %q#D" #: cp/decl.c:1545 #, gcc-internal-format @@ -40609,13 +40009,12 @@ msgstr "redéclaration redondante du membre statique % %qD" #: cp/decl.c:2997 #, gcc-internal-format msgid "local label %qE conflicts with existing label" -msgstr "" +msgstr "l'étiquette locale %qE est en conflit avec l'étiquette existante" #: cp/decl.c:2998 -#, fuzzy, gcc-internal-format -#| msgid "previous declaration" +#, gcc-internal-format msgid "previous label" -msgstr "déclaration précédente" +msgstr "étiquette précédente" #: cp/decl.c:3092 #, gcc-internal-format @@ -40633,15 +40032,14 @@ msgid " crosses initialization of %q#D" msgstr " croise l'initialisation de %q#D" #: cp/decl.c:3145 -#, fuzzy, gcc-internal-format -#| msgid " enters scope of %q#D which has non-trivial destructor" +#, gcc-internal-format msgid " enters scope of %q#D, which has non-trivial destructor" msgstr " entre dans la portée de %q#D qui a un destructeur non trivial" #: cp/decl.c:3200 #, gcc-internal-format, gfc-internal-format msgid " %s" -msgstr "" +msgstr " %s" #: cp/decl.c:3295 cp/decl.c:3315 #, gcc-internal-format @@ -40669,10 +40067,9 @@ msgid " enters synchronized or atomic statement" msgstr " entre dans l'instruction synchronisée ou atomique" #: cp/decl.c:3319 -#, fuzzy, gcc-internal-format -#| msgid " enters constexpr if statement" +#, gcc-internal-format msgid " enters % if statement" -msgstr " entre dans l'instruction « if » « constexpr »" +msgstr " entre dans l'instruction « if » %" #: cp/decl.c:3325 #, gcc-internal-format @@ -40730,10 +40127,9 @@ msgid "template parameters do not match template %qD" msgstr "les paramètres du patron ne correspondent pas au patron %qD" #: cp/decl.c:4097 -#, fuzzy, gcc-internal-format -#| msgid "%<-mpcommit%> was deprecated" +#, gcc-internal-format msgid "%<-fno-for-scope%> is deprecated" -msgstr "%<-mpcommit%> a été rendue obsolète" +msgstr "%<-fno-for-scope%> a été rendue obsolète" #: cp/decl.c:4193 #, gcc-internal-format, gfc-internal-format @@ -41013,10 +40409,9 @@ msgid "uninitialized variable %qD in % function" msgstr "variable %qD non initialisée dans une fonction %" #: cp/decl.c:5591 -#, fuzzy, gcc-internal-format -#| msgid "uninitialized variable %qD in % function" +#, gcc-internal-format msgid "uninitialized variable %qD in % context" -msgstr "variable %qD non initialisée dans une fonction %" +msgstr "variable %qD non initialisée dans un contexte %" #: cp/decl.c:5599 #, gcc-internal-format @@ -41140,10 +40535,9 @@ msgid "assignment (not initialization) in declaration" msgstr "affectation (pas une initialisation) dans la déclaration" #: cp/decl.c:6772 cp/decl.c:12464 -#, fuzzy, gcc-internal-format -#| msgid "ISO C++1z does not allow % storage class specifier" +#, gcc-internal-format msgid "ISO C++17 does not allow % storage class specifier" -msgstr "le C++1z ISO n'autorise pas le spécificateur de classe de stockage %" +msgstr "le C++17 ISO n'autorise pas le spécificateur de classe de stockage %" #: cp/decl.c:6776 cp/decl.c:12468 #, gcc-internal-format @@ -41196,10 +40590,9 @@ msgid "cannot decompose class type %qT: its base classes %qT and %qT have non-st msgstr "impossible de décomposer le type de classe %qT: ses classes de base %qT et %qT ont des membres de données non statiques" #: cp/decl.c:7460 -#, fuzzy, gcc-internal-format -#| msgid "dereferencing pointer to incomplete type %qT" +#, gcc-internal-format msgid "structured binding refers to incomplete type %qT" -msgstr "déréférencement d'un pointeur du type incomplet %qT" +msgstr "la liaison structurée fait référence au type incomplet %qT" #: cp/decl.c:7476 #, gcc-internal-format @@ -41207,34 +40600,30 @@ msgid "cannot decompose variable length array %qT" msgstr "impossible de décomposer le tableau de longueur variable %qT" #: cp/decl.c:7485 cp/decl.c:7573 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "%qs specified for structure field" +#, gcc-internal-format, gfc-internal-format msgid "%u name provided for structured binding" msgid_plural "%u names provided for structured binding" -msgstr[0] "%qs spécifié pour un champ d'une structure" -msgstr[1] "%qs spécifié pour un champ d'une structure" +msgstr[0] "%u nom fourni pour la liaison structurée" +msgstr[1] "%u noms fournis pour la liaison structurée" #: cp/decl.c:7489 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "invalid initializer for structured binding declaration" +#, gcc-internal-format, gfc-internal-format msgid "only %u name provided for structured binding" msgid_plural "only %u names provided for structured binding" -msgstr[0] "initialisation invalide pour la déclaration de liaison structurée" -msgstr[1] "initialisation invalide pour la déclaration de liaison structurée" +msgstr[0] "seulement %u nom fourni pour la liaison structurée" +msgstr[1] "seulement %u noms fournis pour la liaison structurée" #: cp/decl.c:7495 -#, fuzzy, gcc-internal-format -#| msgid "%u names provided while %qT decomposes into %wu elements" +#, gcc-internal-format msgid "while %qT decomposes into %wu element" msgid_plural "while %qT decomposes into %wu elements" -msgstr[0] "%u noms fournis alors que %qT se décompose en %wu éléments" -msgstr[1] "%u noms fournis alors que %qT se décompose en %wu éléments" +msgstr[0] "alors que %qT se décompose en %wu élément" +msgstr[1] "alors que %qT se décompose en %wu éléments" #: cp/decl.c:7540 -#, fuzzy, gcc-internal-format -#| msgid "cannot decompose variable length array %qT" +#, gcc-internal-format msgid "cannot decompose variable length vector %qT" -msgstr "impossible de décomposer le tableau de longueur variable %qT" +msgstr "impossible de décomposer le vecteur de longueur variable %qT" #: cp/decl.c:7566 #, gcc-internal-format @@ -41242,16 +40631,14 @@ msgid "%::value%> is not an integral constant expression" msgstr "%::value%> n'est pas une expression constante entière" #: cp/decl.c:7575 -#, fuzzy, gcc-internal-format -#| msgid "%u names provided while %qT decomposes into %wu elements" +#, gcc-internal-format msgid "while %qT decomposes into %E elements" -msgstr "%u noms fournis alors que %qT se décompose en %wu éléments" +msgstr "alors que %qT se décompose en %E éléments" #: cp/decl.c:7596 -#, fuzzy, gcc-internal-format -#| msgid "in initialization of decomposition variable %qD" +#, gcc-internal-format msgid "in initialization of structured binding variable %qD" -msgstr "dans l'initialisation de la variable de décomposition %qD" +msgstr "dans l'initialisation de la variable de liaison structurée %qD" #: cp/decl.c:7622 #, gcc-internal-format @@ -41440,10 +40827,9 @@ msgid "cannot declare %<::main%> to be inline" msgstr "ne peut déclarer %<::main%> comme étant à mettre en ligne" #: cp/decl.c:8729 -#, fuzzy, gcc-internal-format -#| msgid "cannot declare %<::main%> to be constexpr" +#, gcc-internal-format msgid "cannot declare %<::main%> to be %" -msgstr "ne peut déclarer %<::main%> comme étant constexpr" +msgstr "ne peut déclarer %<::main%> comme étant %" #: cp/decl.c:8731 #, gcc-internal-format @@ -41756,10 +41142,9 @@ msgid "% specifier invalid for variable %qD declared at block scope" msgstr "spécificateur % invalide pour la variable %qD déclarée au niveau du bloc" #: cp/decl.c:9892 -#, fuzzy, gcc-internal-format -#| msgid "inline variables are only available with -std=c++1z or -std=gnu++1z" +#, gcc-internal-format msgid "inline variables are only available with -std=c++17 or -std=gnu++17" -msgstr "les variables « inline » sont uniquement disponibles avec -std=c++1z ou -std=gnu++1z" +msgstr "les variables « inline » sont uniquement disponibles avec -std=c++17 ou -std=gnu++17" #: cp/decl.c:10147 #, gcc-internal-format @@ -41957,70 +41342,59 @@ msgid "% outside class declaration" msgstr "% en dehors de la déclaration de classe" #: cp/decl.c:10704 -#, fuzzy, gcc-internal-format -#| msgid "decomposition declaration cannot be declared %" +#, gcc-internal-format msgid "structured binding declaration cannot be %" -msgstr "une déclaration par décomposition ne peut pas être déclarée %" +msgstr "une déclaration de liaison structurée ne peut pas être %" #: cp/decl.c:10707 -#, fuzzy, gcc-internal-format -#| msgid "decomposition declaration cannot be declared %" +#, gcc-internal-format msgid "structured binding declaration cannot be %" -msgstr "une déclaration par décomposition ne peut pas être déclarée %" +msgstr "une déclaration de liaison structurée ne peut pas être %" #: cp/decl.c:10709 -#, fuzzy, gcc-internal-format -#| msgid "decomposition declaration cannot be declared %" +#, gcc-internal-format msgid "structured binding declaration cannot be %" -msgstr "une déclaration par décomposition ne peut pas être déclarée %" +msgstr "une déclaration de liaison structurée ne peut pas être %" #: cp/decl.c:10713 -#, fuzzy, gcc-internal-format -#| msgid "attribute ignored in declaration of %q#T" +#, gcc-internal-format msgid "structured binding declaration cannot be %qs" -msgstr "attribut ignoré dans la déclaration de %q#T" +msgstr "la déclaration d'une liaison structurée ne peut pas être %qs" #: cp/decl.c:10718 -#, fuzzy, gcc-internal-format -#| msgid "decomposition declaration cannot be declared %" +#, gcc-internal-format msgid "structured binding declaration cannot be %" -msgstr "une déclaration par décomposition ne peut pas être déclarée %" +msgstr "une déclaration de liaison structurée ne peut pas être %" #: cp/decl.c:10724 -#, fuzzy, gcc-internal-format -#| msgid "decomposition declaration cannot be declared %" +#, gcc-internal-format msgid "structured binding declaration cannot be %" -msgstr "une déclaration par décomposition ne peut pas être déclarée %" +msgstr "une déclaration de liaison structurée ne peut pas être %" #: cp/decl.c:10728 -#, fuzzy, gcc-internal-format -#| msgid "decomposition declaration cannot be declared %" +#, gcc-internal-format msgid "structured binding declaration cannot be %" -msgstr "une déclaration par décomposition ne peut pas être déclarée %" +msgstr "une déclaration de liaison structurée ne peut pas être %" #: cp/decl.c:10732 -#, fuzzy, gcc-internal-format -#| msgid "decomposition declaration cannot be declared %" +#, gcc-internal-format msgid "structured binding declaration cannot be %" -msgstr "une déclaration par décomposition ne peut pas être déclarée %" +msgstr "une déclaration de liaison structurée ne peut pas être %" #: cp/decl.c:10736 -#, fuzzy, gcc-internal-format -#| msgid "decomposition declaration cannot be declared %" +#, gcc-internal-format msgid "structured binding declaration cannot be %" -msgstr "une déclaration par décomposition ne peut pas être déclarée %" +msgstr "une déclaration de liaison structurée ne peut pas être %" #: cp/decl.c:10740 -#, fuzzy, gcc-internal-format -#| msgid "decomposition declaration cannot be declared C++98 %" +#, gcc-internal-format msgid "structured binding declaration cannot be C++98 %" -msgstr "une déclaration par décomposition ne peut pas être déclarée avec le % du C++98" +msgstr "une déclaration de liaison structurée ne peut pas avoir le % du C++98" #: cp/decl.c:10751 -#, fuzzy, gcc-internal-format -#| msgid "decomposition declaration cannot be declared with type %qT" +#, gcc-internal-format msgid "structured binding declaration cannot have type %qT" -msgstr "une déclaration par décomposition ne peut pas être déclarée avec le type %qT" +msgstr "une déclaration de liaison structurée ne peut pas avoir le type %qT" #: cp/decl.c:10754 #, gcc-internal-format @@ -42063,10 +41437,9 @@ msgid "storage class specifiers invalid in friend function declarations" msgstr "spécificateurs de classe de stockage invalides dans les déclarations de fonctions amies" #: cp/decl.c:10929 -#, fuzzy, gcc-internal-format -#| msgid "multiple storage classes in declaration of %qs" +#, gcc-internal-format msgid "unnecessary parentheses in declaration of %qs" -msgstr "classes de stockage multiples dans la déclaration de %qs" +msgstr "parenthèses inutiles dans la déclaration de %qs" #: cp/decl.c:10977 #, gcc-internal-format @@ -42237,16 +41610,14 @@ msgid "extra qualification %<%T::%> on member %qs" msgstr "qualification %<%T::%> additionnelle sur le membre %qs" #: cp/decl.c:11495 -#, fuzzy, gcc-internal-format -#| msgid "cannot define member function %<%T::%s%> within %<%T%>" +#, gcc-internal-format msgid "cannot define member function %<%T::%s%> within %qT" -msgstr "ne peut définir la fonction membre %<%T::%s%> à l'intérieur de %<%T%>" +msgstr "ne peut définir la fonction membre %<%T::%s%> à l'intérieur de %qT" #: cp/decl.c:11497 -#, fuzzy, gcc-internal-format -#| msgid "cannot declare member function %<%T::%s%> within %<%T%>" +#, gcc-internal-format msgid "cannot declare member function %<%T::%s%> within %qT" -msgstr "ne peut déclarer la fonction membre %<%T::%s%> à l'intérieur de %<%T%>" +msgstr "ne peut déclarer la fonction membre %<%T::%s%> à l'intérieur de %qT" #: cp/decl.c:11505 #, gcc-internal-format @@ -42500,10 +41871,9 @@ msgid "static data member %qE declared %" msgstr "membre statique %qE déclaré %" #: cp/decl.c:12181 -#, fuzzy, gcc-internal-format -#| msgid "constexpr static data member %qD must have an initializer" +#, gcc-internal-format msgid "% static data member %qD must have an initializer" -msgstr "le membre statique constexpr %qD doit avoir une initialisation" +msgstr "le membre statique % %qD doit avoir une initialisation" #: cp/decl.c:12209 #, gcc-internal-format @@ -42593,10 +41963,9 @@ msgid "cannot explicitly declare member %q#D to have extern linkage" msgstr "ne peut explicitement déclarer le membre %q#D comme ayant une classe de liaison externe" #: cp/decl.c:12412 -#, fuzzy, gcc-internal-format -#| msgid "declaration of constexpr variable %qD is not a definition" +#, gcc-internal-format msgid "declaration of % variable %qD is not a definition" -msgstr "la déclaration de la variable constexpr %qD n'est pas une définition" +msgstr "la déclaration de la variable % %qD n'est pas une définition" #: cp/decl.c:12433 #, gcc-internal-format @@ -42706,46 +42075,39 @@ msgid "%qD must not have variable number of arguments" msgstr "%qD ne doit pas avoir un nombre variables d'arguments" #: cp/decl.c:13195 -#, fuzzy, gcc-internal-format -#| msgid "%qD must take either zero or one argument" +#, gcc-internal-format msgid "%qD must have either zero or one argument" -msgstr "%qD ne peut prendre que zéro ou un argument" +msgstr "%qD doit avoir zéro ou un argument" #: cp/decl.c:13196 -#, fuzzy, gcc-internal-format -#| msgid "%qD must take either one or two arguments" +#, gcc-internal-format msgid "%qD must have either one or two arguments" -msgstr "%qD ne peut prendre que un ou deux arguments" +msgstr "%qD doit avoir un ou deux arguments" #: cp/decl.c:13207 -#, fuzzy, gcc-internal-format -#| msgid "postfix %qD must take % as its argument" +#, gcc-internal-format msgid "postfix %qD must have % as its argument" -msgstr "%qD suffixé doit prendre % comme argument" +msgstr "%qD suffixé doit avoir % comme argument" #: cp/decl.c:13208 -#, fuzzy, gcc-internal-format -#| msgid "postfix %qD must take % as its second argument" +#, gcc-internal-format msgid "postfix %qD must have % as its second argument" -msgstr "%qD suffixé doit prendre % comme second argument" +msgstr "%qD suffixé doit avoir % comme second argument" #: cp/decl.c:13218 -#, fuzzy, gcc-internal-format -#| msgid "%qD must take exactly two arguments" +#, gcc-internal-format msgid "%qD must have no arguments" -msgstr "%qD doit prendre exactement deux arguments" +msgstr "%qD ne doit avoir aucun argument" #: cp/decl.c:13219 cp/decl.c:13228 -#, fuzzy, gcc-internal-format -#| msgid "%qD must take exactly one argument" +#, gcc-internal-format msgid "%qD must have exactly one argument" -msgstr "%qD doit prendre exactement un argument" +msgstr "%qD doit avoir exactement un argument" #: cp/decl.c:13229 -#, fuzzy, gcc-internal-format -#| msgid "%qD must take exactly two arguments" +#, gcc-internal-format msgid "%qD must have exactly two arguments" -msgstr "%qD doit prendre exactement deux arguments" +msgstr "%qD doit avoir exactement deux arguments" #: cp/decl.c:13246 cp/decl.c:13249 #, gcc-internal-format @@ -42932,10 +42294,9 @@ msgid "different underlying type in enum %q#T" msgstr "types sous-jacents différents dans l'enum %q#T" #: cp/decl.c:14157 -#, fuzzy, gcc-internal-format -#| msgid "underlying type %<%T%> of %<%T%> must be an integral type" +#, gcc-internal-format msgid "underlying type %qT of %qT must be an integral type" -msgstr "le type sous-jacent %<%T%> de %<%T%> doit être un type entier" +msgstr "le type sous-jacent %qT de %qT doit être un type entier" #. DR 377 #. @@ -42972,10 +42333,9 @@ msgid "overflow in enumeration values at %qD" msgstr "débordement dans les valeurs de l'énumération à %qD" #: cp/decl.c:14567 -#, fuzzy, gcc-internal-format -#| msgid "enumerator value %E is outside the range of underlying type %<%T%>" +#, gcc-internal-format msgid "enumerator value %qE is outside the range of underlying type %qT" -msgstr "la valeur de l'énumération %E est en dehors de la plage du type sous-jacent %<%T%>" +msgstr "la valeur de l'énumération %qE est en dehors de la plage du type sous-jacent %qT" #: cp/decl.c:14678 #, gcc-internal-format @@ -43071,27 +42431,24 @@ msgid "destructor %qD declared as member template" msgstr "le destructeur %qD est déclaré en tant que patron membre" #: cp/decl2.c:714 -#, fuzzy, gcc-internal-format -#| msgid "old declaration %q#D" +#, gcc-internal-format msgid "no declaration matches %q#D" -msgstr "ancienne déclaration %q#D" +msgstr "aucune déclaration ne correspond à %q#D" #: cp/decl2.c:719 #, gcc-internal-format msgid "no conversion operators declared" -msgstr "" +msgstr "aucun opérateur de conversion déclaré" #: cp/decl2.c:722 -#, fuzzy, gcc-internal-format -#| msgid "In function %qs" +#, gcc-internal-format msgid "no functions named %qD" -msgstr "Dans la fonction %qs" +msgstr "pas de fonction nommée %qD" #: cp/decl2.c:724 -#, fuzzy, gcc-internal-format -#| msgid "label %qD defined here" +#, gcc-internal-format msgid "%#qT defined here" -msgstr "l'étiquette %qD est définie ici" +msgstr "%#qT est défini ici" #: cp/decl2.c:775 #, gcc-internal-format @@ -43159,10 +42516,9 @@ msgid "cannot declare bit-field %qD with function type" msgstr "ne peut déclarer le champ de bits %qD avec un type de fonction" #: cp/decl2.c:1077 -#, fuzzy, gcc-internal-format -#| msgid "cannot declare bit-field %qD with function type" +#, gcc-internal-format msgid "cannot declare bit-field %qD with % type" -msgstr "ne peut déclarer le champ de bits %qD avec un type de fonction" +msgstr "ne peut déclarer le champ de bits %qD avec le type %" #: cp/decl2.c:1084 #, gcc-internal-format @@ -43308,16 +42664,14 @@ msgid "type %qT with no linkage used to declare function %q#D with linkage" msgstr "le type %qT sans classe de liaison est utilisé pour déclarer la fonction %q#D avec une classe de liaison" #: cp/decl2.c:4509 -#, fuzzy, gcc-internal-format -#| msgid "%q#D conflicts with a previous declaration" +#, gcc-internal-format msgid "mangling of %q#D as %qE conflicts with a previous mangle" -msgstr "%q#D entre en conflit avec une déclaration précédente" +msgstr "la décoration de %q#D qui abouti à %qE entre en conflit avec une décoration précédente" #: cp/decl2.c:4512 -#, fuzzy, gcc-internal-format -#| msgid "previous declaration %q#D" +#, gcc-internal-format msgid "previous mangling %q#D" -msgstr "déclaration précédente de %q#D" +msgstr "décoration précédente de %q#D" #: cp/decl2.c:4514 #, gcc-internal-format @@ -43342,8 +42696,7 @@ msgstr "argument par défaut manquant pour le paramètre %P de %q+#D" #. We mark a lambda conversion op as deleted if we can't #. generate it properly; see maybe_add_lambda_conv_op. #: cp/decl2.c:5222 -#, fuzzy, gcc-internal-format -#| msgid "converting lambda which uses %<...%> to function pointer" +#, gcc-internal-format msgid "converting lambda that uses %<...%> to function pointer" msgstr "conversion d'une fonction lambda qui utilise %<...%> en pointeur de fonction" @@ -43355,7 +42708,7 @@ msgstr "utilisation de la fonction supprimée %qD" #: cp/decl2.c:5278 #, gcc-internal-format msgid "use of built-in parameter pack %qD outside of a template" -msgstr "" +msgstr "utilisation du paquet de paramètres intégré %qD en dehors d'un patron" #: cp/error.c:1523 #, gcc-internal-format @@ -43363,15 +42716,14 @@ msgid "with" msgstr "avec" #: cp/error.c:3688 -#, fuzzy, gcc-internal-format -#| msgid "no arguments" +#, gcc-internal-format msgid "(no argument)" -msgstr "pas d'argument" +msgstr "(pas d'argument)" #: cp/error.c:3780 #, gcc-internal-format msgid "[...]" -msgstr "" +msgstr "[...]" #: cp/error.c:4140 #, gcc-internal-format @@ -43635,21 +42987,19 @@ msgid "value-initialization of reference type %qT" msgstr "initialisation par valeur du type référencé %qT" #: cp/init.c:561 -#, fuzzy, gcc-internal-format -#| msgid "recursive instantiation of non-static data member initializer for %qD" +#, gcc-internal-format msgid "recursive instantiation of default member initializer for %qD" -msgstr "instanciation récursive de l'initialisation du membre de donnée non statique pour %qD" +msgstr "instanciation récursive de l'initialisation du membre par défaut pour %qD" #: cp/init.c:608 #, gcc-internal-format msgid "default member initializer for %qD required before the end of its enclosing class" -msgstr "" +msgstr "l'initialisation du membre par défaut pour %qD est requise avant la fin de sa classe englobante" #: cp/init.c:610 -#, fuzzy, gcc-internal-format -#| msgid "union defined here" +#, gcc-internal-format msgid "defined here" -msgstr "« union » défini ici" +msgstr "défini ici" #: cp/init.c:668 #, gcc-internal-format @@ -44015,7 +43365,7 @@ msgstr "%qD déjà capturé dans l'expression lambda" #: cp/lambda.c:632 #, gcc-internal-format msgid "trying to capture %qD in instantiation of generic lambda" -msgstr "" +msgstr "tentative de capturer %qD dans une instanciation d'une lambda générique" #: cp/lambda.c:807 #, gcc-internal-format @@ -44113,16 +43463,14 @@ msgid "mangled name for %qD will change in C++17 because the exception specifica msgstr "le nom décoré pour %qD changera dans le C++17 car la spécification de l'exception fait partir du type de la fonction" #: cp/mangle.c:3906 -#, fuzzy, gcc-internal-format -#| msgid "the mangled name of %qD changed between -fabi-version=%d (%D) and -fabi-version=%d (%D)" +#, gcc-internal-format msgid "the mangled name of %qD changed between %<%s=%d%> (%qD) and %<%s=%d%> (%qD)" -msgstr "le nom décoré de %qD a changé entre -fabi-version=%d (%D) et -fabi-version=%d (%D)" +msgstr "le nom décoré de %qD a changé entre %<%s=%d%> (%qD) et %<%s=%d%> (%qD)" #: cp/mangle.c:3912 -#, fuzzy, gcc-internal-format -#| msgid "the mangled name of %qD changes between -fabi-version=%d (%D) and -fabi-version=%d (%D)" +#, gcc-internal-format msgid "the mangled name of %qD changes between %<%s=%d%> (%qD) and %<%s=%d%> (%qD)" -msgstr "le nom décoré de %qD change entre -fabi-version=%d (%D) et -fabi-version=%d (%D)" +msgstr "le nom décoré de %qD change entre %<%s=%d%> (%qD) et %<%s=%d%> (%qD)" #: cp/mangle.c:4184 #, gcc-internal-format @@ -44160,10 +43508,9 @@ msgid "union member %q+D with non-trivial %qD" msgstr "membre d'union %q+D avec un %qD non trivial" #: cp/method.c:1280 -#, fuzzy, gcc-internal-format -#| msgid "defaulted constructor calls non-constexpr %qD" +#, gcc-internal-format msgid "defaulted constructor calls non-% %qD" -msgstr "le constructeur par défaut appelle %qD qui n'est pas constexpr" +msgstr "le constructeur par défaut appelle %qD qui n'est pas %" #: cp/method.c:1347 #, gcc-internal-format @@ -44221,26 +43568,23 @@ msgid "%q#F is implicitly deleted because its exception-specification does not m msgstr "%q#F est implicitement supprimé car sa spécification d'exception ne correspond pas à la spécification d'exception implicite %qX" #: cp/method.c:2188 -#, fuzzy, gcc-internal-format -#| msgid "does not match expected signature %qD" +#, gcc-internal-format msgid "defaulted declaration %q+D does not match the expected signature" -msgstr "ne correspond pas à la signature %qD attendue" +msgstr "la déclaration par défaut %q+D ne correspond pas à la signature attendue" #: cp/method.c:2191 -#, fuzzy, gcc-internal-format -#| msgid "does not match expected signature %qD" +#, gcc-internal-format msgid "expected signature: %qD" -msgstr "ne correspond pas à la signature %qD attendue" +msgstr "signature attendue: %qD" #: cp/method.c:2230 msgid "function %q+D defaulted on its redeclaration with an exception-specification that differs from the implicit exception-specification %qX" msgstr "la fonction %q+D est imposée par défaut au moment de sa déclaration avec une spécification d'exception qui diffère de la spécification d'exception implicite %qX" #: cp/method.c:2252 -#, fuzzy, gcc-internal-format -#| msgid "explicitly defaulted function %q+D cannot be declared as constexpr because the implicit declaration is not constexpr:" +#, gcc-internal-format msgid "explicitly defaulted function %q+D cannot be declared as % because the implicit declaration is not %:" -msgstr "la fonction %q+D imposée par défaut explicitement ne peut pas être déclarée constexpr car la déclaration implicite n'est pas constexpr:" +msgstr "la fonction %q+D imposée par défaut explicitement ne peut pas être déclarée % car la déclaration implicite n'est pas %:" #: cp/method.c:2297 #, gcc-internal-format @@ -44263,16 +43607,14 @@ msgid "%q#D conflicts with a previous declaration" msgstr "%q#D entre en conflit avec une déclaration précédente" #: cp/name-lookup.c:2450 -#, fuzzy, gcc-internal-format -#| msgid "%q#D hides constructor for %q#T" +#, gcc-internal-format msgid "%q#D hides constructor for %q#D" -msgstr "%q#D cache le constructeur pour %q#T" +msgstr "%q#D cache le constructeur pour %q#D" #: cp/name-lookup.c:2582 -#, fuzzy, gcc-internal-format -#| msgid "conflicting declaration %q+#D" +#, gcc-internal-format msgid "conflicting C language linkage declaration %q#D" -msgstr "entre en conflit avec la déclaration %q+#D" +msgstr "déclarations conflictuelles de l'édition de liens du langage C %q#D" #: cp/name-lookup.c:2587 #, gcc-internal-format @@ -44290,25 +43632,22 @@ msgid "declaration of %qD shadows a member of %qT" msgstr "la déclaration de %qD masque un membre de %qT" #: cp/name-lookup.c:2962 -#, fuzzy, gcc-internal-format -#| msgid "global declaration %q#D" +#, gcc-internal-format msgid "local external declaration %q#D" -msgstr "déclaration globale de %q#D" +msgstr "déclaration externe locale de %q#D" #: cp/name-lookup.c:2964 -#, fuzzy, gcc-internal-format -#| msgid "conflicts with previous declaration %q#D" +#, gcc-internal-format msgid "does not match previous declaration %q#D" -msgstr "entre en conflit avec la déclaration précédente de %q#D" +msgstr "ne correspond pas à la déclaration précédente %q#D" #. In a local class, a friend function declaration must #. find a matching decl in the innermost non-class scope. #. [class.friend/11] #: cp/name-lookup.c:3085 -#, fuzzy, gcc-internal-format -#| msgid "friend declaration %qD in local class without prior declaration" +#, gcc-internal-format msgid "friend declaration %qD in local class without prior local declaration" -msgstr "déclaration amie %qD dans la classe locale sans déclaration antérieure" +msgstr "déclaration amie %qD dans la classe locale sans déclaration locale antérieure" #: cp/name-lookup.c:3259 #, gcc-internal-format @@ -44316,10 +43655,9 @@ msgid "name lookup of %qD changed" msgstr "la recherche du nom de %qD a changé" #: cp/name-lookup.c:3262 -#, fuzzy, gcc-internal-format -#| msgid " matches this %qD under ISO standard rules" +#, gcc-internal-format msgid "matches this %qD under ISO standard rules" -msgstr " concorde avec %qD selon les règles du standard ISO" +msgstr "concorde avec %qD selon les règles du standard ISO" #: cp/name-lookup.c:3264 #, gcc-internal-format @@ -44332,27 +43670,24 @@ msgid "name lookup of %qD changed for ISO % scoping" msgstr "la recherche du nom de %qD a changé pour la portée du % ISO" #: cp/name-lookup.c:3285 -#, fuzzy, gcc-internal-format -#| msgid " cannot use obsolete binding at %q+D because it has a destructor" +#, gcc-internal-format msgid "cannot use obsolete binding %qD because it has a destructor" -msgstr " ne peut utiliser la liaison obsolète à %q+D parce qu'il a un destructeur" +msgstr "ne peut utiliser la liaison obsolète à %qD parce qu'il a un destructeur" #: cp/name-lookup.c:3296 -#, fuzzy, gcc-internal-format -#| msgid " using obsolete binding at %qD" +#, gcc-internal-format msgid "using obsolete binding %qD" -msgstr " utilisation de la liaison obsolète à %qD" +msgstr "utilisation de la liaison obsolète à %qD" #: cp/name-lookup.c:3300 #, gcc-internal-format msgid "this flexibility is deprecated and will be removed" -msgstr "" +msgstr "cette flexibilité est dépréciée et sera supprimée" #: cp/name-lookup.c:3354 -#, fuzzy, gcc-internal-format -#| msgid "%s %s(%E) %p %d\n" +#, gcc-internal-format msgid "%s %<%s(%E)%> %p %d\n" -msgstr "%s %s(%E) %p %d\n" +msgstr "%s %<%s(%E)%> %p %d\n" #: cp/name-lookup.c:3357 #, gcc-internal-format @@ -44430,16 +43765,14 @@ msgid "explicit qualification in declaration of %qD" msgstr "qualificatifs explicites dans la déclaration de %qD" #: cp/name-lookup.c:5002 -#, fuzzy, gcc-internal-format -#| msgid "%qD has not been declared within %D" +#, gcc-internal-format msgid "%qD has not been declared within %qD" -msgstr "%qD n'a pas été déclaré dans %D" +msgstr "%qD n'a pas été déclaré dans %qD" #: cp/name-lookup.c:5004 -#, fuzzy, gcc-internal-format -#| msgid "only here as a friend" +#, gcc-internal-format msgid "only here as a %" -msgstr "uniquement ici comme ami" +msgstr "uniquement ici comme un %" #: cp/name-lookup.c:5013 #, gcc-internal-format @@ -44496,19 +43829,17 @@ msgstr "alternatives suggérées: %qs" #: cp/name-lookup.c:5519 #, gcc-internal-format msgid "% is defined in header %qs; did you forget to %<#include %s%>?" -msgstr "" +msgstr "% est défini dans l'en-tête %qs ; avez-vous oublié %<#include %s%> ?" #: cp/name-lookup.c:5698 -#, fuzzy, gcc-internal-format -#| msgid "weak %q+D cannot be defined %qE" +#, gcc-internal-format msgid "the macro %qs had not yet been defined" -msgstr "le %q+D faible ne peut pas être défini %qE" +msgstr "la macro %qs n'a pas encore été définie" #: cp/name-lookup.c:5700 -#, fuzzy, gcc-internal-format -#| msgid "struct defined here" +#, gcc-internal-format msgid "it was later defined here" -msgstr "« struct » défini ici" +msgstr "elle a été définie ici plus tard" #: cp/name-lookup.c:6429 #, gcc-internal-format @@ -44516,22 +43847,19 @@ msgid "declaration of std::initializer_list does not match #include et n'est pas un patron" #: cp/name-lookup.c:6801 -#, fuzzy, gcc-internal-format -#| msgid "switch %qs is no longer supported" +#, gcc-internal-format msgid "strong using directive no longer supported" -msgstr "l'option %qs n'est plus supportée" +msgstr "la directive « using » forte n'est plus supportée" #: cp/name-lookup.c:6804 -#, fuzzy, gcc-internal-format -#| msgid "strong using is deprecated; use inline namespaces instead" +#, gcc-internal-format msgid "you may use an inline namespace instead" -msgstr "un « using » fort est déprécié, utilisez plutôt un espace de noms en ligne" +msgstr "vous pouvez utiliser un espace de noms en ligne à la place" #: cp/name-lookup.c:6821 -#, fuzzy, gcc-internal-format -#| msgid "attributes ignored on uninstantiated type" +#, gcc-internal-format msgid "attributes ignored on local using directive" -msgstr "attributs ignorés sur un type non instancié" +msgstr "attributs ignorés sur une directive « using » locale" #: cp/name-lookup.c:6905 #, gcc-internal-format @@ -44540,22 +43868,19 @@ msgstr "l'alias de l'espace de noms %qD n'est pas permis ici, on suppose %qD" #. We only allow depth 255. #: cp/name-lookup.c:6925 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "%qD may not be declared within a namespace" +#, gcc-internal-format, gfc-internal-format msgid "cannot nest more than %d namespaces" -msgstr "%qD ne peut pas être déclaré dans un espace de noms" +msgstr "impossible d'imbriquer plus de %d espaces de noms" #: cp/name-lookup.c:6960 -#, fuzzy, gcc-internal-format -#| msgid "method attributes must be specified at the end only" +#, gcc-internal-format msgid "inline namespace must be specified at initial definition" -msgstr "les attributs de méthodes doivent être spécifiés uniquement à la fin" +msgstr "un espace de nom en ligne doit être spécifié à la définition initiale" #: cp/name-lookup.c:6961 -#, fuzzy, gcc-internal-format -#| msgid "label %qD defined here" +#, gcc-internal-format msgid "%qD defined here" -msgstr "l'étiquette %qD est définie ici" +msgstr "%qD défini ici" #: cp/name-lookup.c:7034 #, gcc-internal-format @@ -44758,10 +44083,9 @@ msgid "%qs cannot appear in a constant-expression" msgstr "%qs ne peut pas apparaître dans une expression de constante" #: cp/parser.c:3269 -#, fuzzy, gcc-internal-format -#| msgid "class template argument deduction is only available with -std=c++1z or -std=gnu++1z" +#, gcc-internal-format msgid "class template argument deduction is only available with -std=c++17 or -std=gnu++17" -msgstr "la déduction des arguments d'un patron de classe est uniquement disponible avec -std=c++1z ou -std=gnu++1z" +msgstr "la déduction des arguments d'un patron de classe est uniquement disponible avec -std=c++17 ou -std=gnu++17" #: cp/parser.c:3274 #, gcc-internal-format @@ -44831,10 +44155,9 @@ msgid "and %qT has no template constructors" msgstr "et %qT n'a pas de constructeur avec patron" #: cp/parser.c:3388 -#, fuzzy, gcc-internal-format -#| msgid "need % before %<%T::%E%> because %qT is a dependent scope" +#, gcc-internal-format msgid "need % before %<%T::%D::%E%> because %<%T::%D%> is a dependent scope" -msgstr "a besoin de % avant %<%T::%E%> car %qT est une portée dépendante" +msgstr "a besoin de % avant %<%T::%D::%E%> car %<%T::%D%> est une portée dépendante" #: cp/parser.c:3396 #, gcc-internal-format @@ -44894,18 +44217,17 @@ msgstr "impossible de trouver l'opérateur littéral numérique %qD" #: cp/parser.c:4435 #, gcc-internal-format msgid "add % (from ) to enable the C++14 user-defined literal suffixes" -msgstr "" +msgstr "ajoutez % (de ) pour activer les suffixes littéraux définis par l'utilisateur du C++14" #: cp/parser.c:4439 #, gcc-internal-format msgid "or use % instead of % for the GNU built-in suffix" -msgstr "" +msgstr "ou utilisez % au lieu de % pour les suffixes internes GNU" #: cp/parser.c:4443 -#, fuzzy, gcc-internal-format -#| msgid "use -std=gnu++11 or -fext-numeric-literals to enable more built-in suffixes" +#, gcc-internal-format msgid "use -fext-numeric-literals to enable more built-in suffixes" -msgstr "utilisez -std=gnu++11 ou -fext-numeric-literals pour activer plus de suffixes internes" +msgstr "utilisez -fext-numeric-literals pour activer plus de suffixes internes" #: cp/parser.c:4522 #, gcc-internal-format @@ -44959,10 +44281,9 @@ msgid "statement-expressions are not allowed outside functions nor in template-a msgstr "les expressions-instructions ne sont pas permises en dehors des fonctions ni dans les listes d'arguments du patron" #: cp/parser.c:5211 -#, fuzzy, gcc-internal-format -#| msgid "fold-expressions only available with -std=c++1z or -std=gnu++1z" +#, gcc-internal-format msgid "fold-expressions only available with -std=c++17 or -std=gnu++17" -msgstr "les expressions fold sont uniquement disponibles avec -std=c++1z ou -std=gnu++1z" +msgstr "les expressions fold sont uniquement disponibles avec -std=c++17 ou -std=gnu++17" #: cp/parser.c:5269 cp/parser.c:5446 cp/parser.c:5624 cp/semantics.c:3567 #, gcc-internal-format @@ -45140,10 +44461,9 @@ msgid "expression in new-declarator must have integral or enumeration type" msgstr "l'expression dans la déclaration « new » doit être un type entier ou un type énuméré" #: cp/parser.c:9019 -#, fuzzy, gcc-internal-format -#| msgid "use of old-style cast" +#, gcc-internal-format msgid "use of old-style cast to %q#T" -msgstr "utilisation d'un vieux style de transtypage" +msgstr "utilisation d'un vieux style de transtypage vers %q#T" #: cp/parser.c:9167 #, gcc-internal-format @@ -45181,10 +44501,9 @@ msgid "explicit by-copy capture of % redundant with by-copy capture defau msgstr "la capture par copie explicite de % est redondante avec la capture par copie par défaut" #: cp/parser.c:10263 -#, fuzzy, gcc-internal-format -#| msgid "%<*this%> capture only available with -std=c++1z or -std=gnu++1z" +#, gcc-internal-format msgid "%<*this%> capture only available with -std=c++17 or -std=gnu++17" -msgstr "la capture de %<*this%> est uniquement disponible avec -std=c++1z ou -std=gnu++1z" +msgstr "la capture de %<*this%> est uniquement disponible avec -std=c++17 ou -std=gnu++17" #: cp/parser.c:10308 #, gcc-internal-format @@ -45227,10 +44546,9 @@ msgid "lambda templates are only available with -std=c++14 or -std=gnu++14" msgstr "les patrons lambda sont uniquement disponibles avec -std=c++14 ou -std=gnu++14" #: cp/parser.c:10444 -#, fuzzy, gcc-internal-format -#| msgid "lambda templates are only available with -std=c++14 or -std=gnu++14" +#, gcc-internal-format msgid "lambda templates are only available with -std=c++2a or -std=gnu++2a" -msgstr "les patrons lambda sont uniquement disponibles avec -std=c++14 ou -std=gnu++14" +msgstr "les patrons lambda sont uniquement disponibles avec -std=c++2a ou -std=gnu++2a" #: cp/parser.c:10476 #, gcc-internal-format @@ -45243,10 +44561,9 @@ msgid "duplicate %" msgstr "% dupliqué" #: cp/parser.c:10541 -#, fuzzy, gcc-internal-format -#| msgid "% lambda only available with -std=c++1z or -std=gnu++1z" +#, gcc-internal-format msgid "% lambda only available with -std=c++17 or -std=gnu++17" -msgstr "les lambda % sont uniquement disponibles avec -std=c++1z ou -std=gnu++1z" +msgstr "les lambda % sont uniquement disponibles avec -std=c++17 ou -std=gnu++17" #: cp/parser.c:10908 cp/parser.c:11101 #, gcc-internal-format @@ -45274,22 +44591,19 @@ msgid "%<%T::%D%> names the constructor, not the type" msgstr "%<%T::%D%> nomme le constructeur, pas le type" #: cp/parser.c:11165 -#, fuzzy, gcc-internal-format -#| msgid "compound-statement in constexpr function" +#, gcc-internal-format msgid "compound-statement in % function" -msgstr "instruction composée dans une fonction constexpr" +msgstr "instruction composée dans une fonction %" #: cp/parser.c:11292 -#, fuzzy, gcc-internal-format -#| msgid "% only available with -std=c++1z or -std=gnu++1z" +#, gcc-internal-format msgid "% only available with -std=c++17 or -std=gnu++17" -msgstr "% uniquement disponible avec -std=c++1z ou -std=gnu++1z" +msgstr "% uniquement disponible avec -std=c++17 ou -std=gnu++17" #: cp/parser.c:11319 -#, fuzzy, gcc-internal-format -#| msgid "init-statement in selection statements only available with -std=c++1z or -std=gnu++1z" +#, gcc-internal-format msgid "init-statement in selection statements only available with -std=c++17 or -std=gnu++17" -msgstr "l'instruction init dans des instructions de sélection est uniquement disponible avec -std=c++1z ou -std=gnu++1z" +msgstr "l'instruction init dans des instructions de sélection est uniquement disponible avec -std=c++17 ou -std=gnu++17" #: cp/parser.c:11489 cp/parser.c:28270 #, gcc-internal-format @@ -45388,16 +44702,14 @@ msgid "multiple declarations in range-based % loop" msgstr "déclarations multiples dans une boucle % parcourant une plage" #: cp/parser.c:13203 -#, fuzzy, gcc-internal-format -#| msgid "unrestricted unions only available with -std=c++11 or -std=gnu++11" +#, gcc-internal-format msgid "structured bindings only available with -std=c++17 or -std=gnu++17" -msgstr "les unions sans restrictions sont disponibles avec -std=c++11 ou -std=gnu++11" +msgstr "les liaisons structurées sont uniquement disponibles avec -std=c++17 ou -std=gnu++17" #: cp/parser.c:13252 -#, fuzzy, gcc-internal-format -#| msgid "invalid initializer for structured binding declaration" +#, gcc-internal-format msgid "empty structured binding declaration" -msgstr "initialisation invalide pour la déclaration de liaison structurée" +msgstr "déclaration de liaison structurée vide" #: cp/parser.c:13270 #, gcc-internal-format @@ -45440,10 +44752,9 @@ msgid "invalid linkage-specification" msgstr "spécification de classe de liaison invalide" #: cp/parser.c:13855 -#, fuzzy, gcc-internal-format -#| msgid "static_assert without a message only available with -std=c++1z or -std=gnu++1z" +#, gcc-internal-format msgid "static_assert without a message only available with -std=c++17 or -std=gnu++17" -msgstr "un static_assert sans message est uniquement disponible avec -std=c++1z ou -std=gnu++1z" +msgstr "un static_assert sans message est uniquement disponible avec -std=c++17 ou -std=gnu++17" #: cp/parser.c:14057 #, gcc-internal-format @@ -45471,10 +44782,9 @@ msgid "only constructors take member initializers" msgstr "seuls les constructeurs prennent des initialisions membres" #: cp/parser.c:14337 -#, fuzzy, gcc-internal-format -#| msgid "cannot expand initializer for member %<%D%>" +#, gcc-internal-format msgid "cannot expand initializer for member %qD" -msgstr "impossible de développer l'initialisation du membre %<%D%>" +msgstr "impossible de développer l'initialisation du membre %qD" #: cp/parser.c:14349 #, gcc-internal-format @@ -45660,10 +44970,9 @@ msgid "expected type-name" msgstr "un nom de type attendu" #: cp/parser.c:17554 -#, fuzzy, gcc-internal-format -#| msgid "elaborated-type-specifier for a scoped enum must not use the %<%D%> keyword" +#, gcc-internal-format msgid "elaborated-type-specifier for a scoped enum must not use the %qD keyword" -msgstr "un spécificateur de type élaboré pour un enum fortement typé ne peut pas utiliser le mot-clé %<%D%>" +msgstr "un spécificateur de type élaboré pour un enum fortement typé ne peut pas utiliser le mot-clé %qD" #: cp/parser.c:17777 #, gcc-internal-format @@ -45761,22 +45070,19 @@ msgid "expected namespace-name" msgstr "espace de noms attendu" #: cp/parser.c:18492 -#, fuzzy, gcc-internal-format -#| msgid "nested namespace definitions only available with -std=c++1z or -std=gnu++1z" +#, gcc-internal-format msgid "nested namespace definitions only available with -std=c++17 or -std=gnu++17" -msgstr "les définitions d'espace de noms imbriqués sont uniquement disponibles avec -std=c++1z ou -std=gnu++1z" +msgstr "les définitions d'espace de noms imbriqués sont uniquement disponibles avec -std=c++17 ou -std=gnu++17" #: cp/parser.c:18500 -#, fuzzy, gcc-internal-format -#| msgid "expected namespace-name" +#, gcc-internal-format msgid "nested namespace name required" -msgstr "espace de noms attendu" +msgstr "nom d'espace de nom imbriqué attendu" #: cp/parser.c:18505 -#, fuzzy, gcc-internal-format -#| msgid "namespace %qD entered" +#, gcc-internal-format msgid "namespace name required" -msgstr "entrée dans l'espace de noms %qD" +msgstr "nom d'espace de nom attendu" #: cp/parser.c:18509 #, gcc-internal-format @@ -45799,10 +45105,9 @@ msgid "% definition is not allowed here" msgstr "la définition % n'est pas permise ici" #: cp/parser.c:18725 -#, fuzzy, gcc-internal-format -#| msgid "pack expansion in using-declaration only available with -std=c++1z or -std=gnu++1z" +#, gcc-internal-format msgid "pack expansion in using-declaration only available with -std=c++17 or -std=gnu++17" -msgstr "l'expansion de paquets dans une déclaration « using » est uniquement disponible avec -std=c++1z ou -std=gnu++1z" +msgstr "l'expansion de paquets dans une déclaration « using » est uniquement disponible avec -std=c++17 ou -std=gnu++17" #: cp/parser.c:18740 #, gcc-internal-format @@ -45810,10 +45115,9 @@ msgid "a template-id may not appear in a using-declaration" msgstr "un template-id ne peut pas apparaître dans l'utilisation de la déclaration" #: cp/parser.c:18787 -#, fuzzy, gcc-internal-format -#| msgid "comma-separated list in using-declaration only available with -std=c++1z or -std=gnu++1z" +#, gcc-internal-format msgid "comma-separated list in using-declaration only available with -std=c++17 or -std=gnu++17" -msgstr "une liste séparée par des virgules dans une déclaration « using » est uniquement disponible avec -std=c++1z ou -std=gnu++1z" +msgstr "une liste séparée par des virgules dans une déclaration « using » est uniquement disponible avec -std=c++17 ou -std=gnu++17" #: cp/parser.c:18797 #, gcc-internal-format @@ -45944,10 +45248,9 @@ msgid "multiple ref-qualifiers" msgstr "qualificatifs de référence multiples" #: cp/parser.c:20634 -#, fuzzy, gcc-internal-format -#| msgid "%E requires %<-fgnu-tm%>" +#, gcc-internal-format msgid "%qE requires %<-fgnu-tm%>" -msgstr "%E requiert %<-fgnu-tm%>" +msgstr "%qE requiert %<-fgnu-tm%>" #: cp/parser.c:20692 #, gcc-internal-format @@ -46010,16 +45313,14 @@ msgid "parameter pack cannot have a default argument" msgstr "le paquet de paramètres ne peut pas avoir d'argument par défaut" #: cp/parser.c:22039 -#, fuzzy, gcc-internal-format -#| msgid "extended initializer lists only available with -std=c++11 or -std=gnu++11" +#, gcc-internal-format msgid "C++ designated initializers only available with -std=c++2a or -std=gnu++2a" -msgstr "les listes d'initialisation étendues sont uniquement disponibles avec -std=c++11 ou -std=gnu++11" +msgstr "les initialisations désignées du C++ sont uniquement disponibles avec -std=c++2a ou -std=gnu++2a" #: cp/parser.c:22059 -#, fuzzy, gcc-internal-format -#| msgid "ISO C++ does not allow designated initializers" +#, gcc-internal-format msgid "ISO C++ does not allow GNU designated initializers" -msgstr "le C++ ISO ne permet pas des initialisations par désignation" +msgstr "le C++ ISO ne permet pas des initialisations par désignation de GNU" #: cp/parser.c:22097 #, gcc-internal-format @@ -46029,18 +45330,17 @@ msgstr "le C++ ISO ne permet pas des initialisations par désignation du C99" #: cp/parser.c:22111 #, gcc-internal-format msgid "either all initializer clauses should be designated or none of them should be" -msgstr "" +msgstr "soit toutes les instructions d'initialisation devraient être désignées ou aucune ne devrait l'être" #: cp/parser.c:22136 -#, fuzzy, gcc-internal-format -#| msgid "ISO C++ does not allow designated initializers" +#, gcc-internal-format msgid "%<...%> not allowed in designated initializer list" -msgstr "le C++ ISO ne permet pas des initialisations par désignation" +msgstr "%<...%> pas permis dans une liste d'initialisation par désignation" #: cp/parser.c:22174 #, gcc-internal-format msgid "%<.%s%> designator used multiple times in the same initializer list" -msgstr "" +msgstr "désignateur %<.%s%> utilisé plusieurs fois dans la même liste d'initialiseurs" #: cp/parser.c:22230 cp/parser.c:22356 #, gcc-internal-format @@ -46083,10 +45383,9 @@ msgid "qualified name does not name a class" msgstr "le nom qualifié ne nomme pas une classe" #: cp/parser.c:22948 -#, fuzzy, gcc-internal-format -#| msgid "keyword % not allowed outside of templates" +#, gcc-internal-format msgid "keyword % not allowed in class-head-name" -msgstr "le mot-clé % n'est pas permis en dehors des patrons" +msgstr "le mot-clé % n'est pas permis dans class-head-name (NdT: nom de classe)" #: cp/parser.c:22954 #, gcc-internal-format @@ -46119,10 +45418,9 @@ msgid "expected class-key" msgstr "mot-clé de type classe (class ou struct) attendu" #: cp/parser.c:23252 -#, fuzzy, gcc-internal-format -#| msgid "ISO C++ forbids typename key in template template parameter; use -std=c++1z or -std=gnu++1z" +#, gcc-internal-format msgid "ISO C++ forbids typename key in template template parameter; use -std=c++17 or -std=gnu++17" -msgstr "le C++ ISO interdit le mot-clé typename dans un paramètre de patron qui est un patron; utilisez -std=c++1z ou -std=gnu++1z" +msgstr "le C++ ISO interdit le mot-clé typename dans un paramètre de patron qui est un patron; utilisez -std=c++17 ou -std=gnu++17" #: cp/parser.c:23256 #, gcc-internal-format @@ -46145,21 +45443,19 @@ msgid "a storage class on an anonymous aggregate in class scope is not allowed" msgstr "une classe de stockage sur un agrégat anonyme dans une classe n'est pas permis" #: cp/parser.c:23640 -#, fuzzy, gcc-internal-format -#| msgid "extended initializer lists only available with -std=c++11 or -std=gnu++11" +#, gcc-internal-format msgid "default member initializers for bit-fields only available with -std=c++2a or -std=gnu++2a" -msgstr "les listes d'initialisation étendues sont uniquement disponibles avec -std=c++11 ou -std=gnu++11" +msgstr "les initialiseurs de membre par défaut pour les champs de bits sont uniquement disponibles avec -std=c++2a ou -std=gnu++2a" #: cp/parser.c:23647 -#, fuzzy, gcc-internal-format -#| msgid "alignment specified for unnamed bit-field" +#, gcc-internal-format msgid "default member initializer for unnamed bit-field" -msgstr "un alignement est spécifié pour un champ de bits sans nom" +msgstr "initialiseur d'un membre par défaut pour un champ de bits sans nom" #: cp/parser.c:23660 #, gcc-internal-format msgid "ISO C++ allows bit-field attributes only before the %<:%> token" -msgstr "" +msgstr "le C++ ISO autorise les attributs de champs de bits uniquement avant l'élément %<:%>" #: cp/parser.c:23805 #, gcc-internal-format @@ -46167,10 +45463,9 @@ msgid "pure-specifier on function-definition" msgstr "spécificateur pur sur une définition de fonction" #: cp/parser.c:23825 -#, fuzzy, gcc-internal-format -#| msgid "expected %<;%> after class definition" +#, gcc-internal-format msgid "extra %<;%> after in-class function definition" -msgstr "%<;%> attendu après la définition de la classe" +msgstr "%<;%> supplémentaire après la définition dans la classe" #: cp/parser.c:23872 #, gcc-internal-format @@ -46218,10 +45513,9 @@ msgid "types may not be defined in an exception-specification" msgstr "les types ne peuvent pas être définis dans une spécification d'exception" #: cp/parser.c:24352 -#, fuzzy, gcc-internal-format -#| msgid "ISO C++1z does not allow dynamic exception specifications" +#, gcc-internal-format msgid "ISO C++17 does not allow dynamic exception specifications" -msgstr "le C++1z ISO n'autorise pas la spécification dynamique des exceptions" +msgstr "le C++17 ISO n'autorise pas la spécification dynamique des exceptions" #: cp/parser.c:24358 #, gcc-internal-format @@ -46270,10 +45564,9 @@ msgid "expected attribute before %<...%>" msgstr "attribut attendu avant %<...%>" #: cp/parser.c:25299 -#, fuzzy, gcc-internal-format -#| msgid "attribute using prefix only available with -std=c++1z or -std=gnu++1z" +#, gcc-internal-format msgid "attribute using prefix only available with -std=c++17 or -std=gnu++17" -msgstr "l'attribut de préfixe « using » est uniquement disponible avec -std=c++1z ou -std=gnu++1z" +msgstr "l'attribut de préfixe « using » est uniquement disponible avec -std=c++17 ou -std=gnu++17" #: cp/parser.c:25508 #, gcc-internal-format @@ -46736,10 +46029,9 @@ msgid "%<#pragma GCC ivdep%> must be inside a function" msgstr "%<#pragma GCC ivdep%> doit être à l'intérieur d'une fonction" #: cp/parser.c:38734 -#, fuzzy, gcc-internal-format -#| msgid "%<#pragma GCC ivdep%> must be inside a function" +#, gcc-internal-format msgid "%<#pragma GCC unroll%> must be inside a function" -msgstr "%<#pragma GCC ivdep%> doit être à l'intérieur d'une fonction" +msgstr "%<#pragma GCC unroll%> doit être à l'intérieur d'une fonction" #: cp/parser.c:38814 #, gcc-internal-format @@ -46754,7 +46046,7 @@ msgstr "les patrons implicites ne peuvent pas être %" #: cp/parser.c:39094 #, gcc-internal-format msgid "% linkage started here" -msgstr "" +msgstr "édition de liens % démarrée ici" #: cp/pt.c:302 #, gcc-internal-format @@ -46839,10 +46131,9 @@ msgid "specialization of %qD after instantiation" msgstr "spécialisation de %qD après instanciation" #: cp/pt.c:1946 cp/semantics.c:5240 -#, fuzzy, gcc-internal-format -#| msgid "%s %#D" +#, gcc-internal-format msgid "%s %#qD" -msgstr "%s %#D" +msgstr "%s %#qD" #: cp/pt.c:2080 #, gcc-internal-format @@ -46875,10 +46166,9 @@ msgid "variable templates only available with -std=c++14 or -std=gnu++14" msgstr "les patrons de variables sont uniquement disponibles avec -std=c++14 ou -std=gnu++14" #: cp/pt.c:2572 -#, fuzzy, gcc-internal-format -#| msgid "too many template headers for %D (should be %d)" +#, gcc-internal-format msgid "too many template headers for %qD (should be %d)" -msgstr "trop d'en-têtes de patrons pour %D (devrait être %d)" +msgstr "trop d'en-têtes de patrons pour %qD (devrait être %d)" #: cp/pt.c:2578 #, gcc-internal-format @@ -46987,28 +46277,24 @@ msgid "explicit specialization of function concept %qD" msgstr "spécialisation explicite du concept de fonction %qD" #: cp/pt.c:3461 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "Argument of ACOS at %L must be between -1 and 1" +#, gcc-internal-format, gfc-internal-format msgid "argument to __integer_pack must be between 0 and %d" -msgstr "L'argument de ACOS à %L doit être compris entre -1 et 1" +msgstr "l'argument de __integer_pack doit être compris entre 0 et %d" #: cp/pt.c:3778 -#, fuzzy, gcc-internal-format -#| msgid "base initializer expansion %<%T%> contains no parameter packs" +#, gcc-internal-format msgid "base initializer expansion %qT contains no parameter packs" -msgstr "l'expansion de l'initialisation de base %<%T%> ne contient pas de paquet de paramètres" +msgstr "l'expansion de l'initialisation de base %qT ne contient pas de paquet de paramètres" #: cp/pt.c:3846 -#, fuzzy, gcc-internal-format -#| msgid "expansion pattern %<%T%> contains no argument packs" +#, gcc-internal-format msgid "expansion pattern %qT contains no argument packs" -msgstr "le motif d'expansion %<%T%> ne contient pas de paquet d'arguments" +msgstr "le motif d'expansion %qT ne contient pas de paquet d'arguments" #: cp/pt.c:3848 -#, fuzzy, gcc-internal-format -#| msgid "expansion pattern %<%E%> contains no argument packs" +#, gcc-internal-format msgid "expansion pattern %qE contains no argument packs" -msgstr "le motif d'expansion %<%E%> ne contient pas de paquet d'arguments" +msgstr "le motif d'expansion %qE ne contient pas de paquet d'arguments" #: cp/pt.c:3898 #, gcc-internal-format @@ -47131,10 +46417,9 @@ msgid "default template arguments may not be used in function template friend re msgstr "les arguments par défaut du patron ne peuvent pas être utilisés dans la redéclaration d'un ami d'un patron d'une fonction" #: cp/pt.c:5136 -#, fuzzy, gcc-internal-format -#| msgid "default template arguments may not be used in function template friend declarations" +#, gcc-internal-format msgid "default template arguments may not be used in template friend declarations" -msgstr "les arguments par défaut du patron ne peuvent pas être utilisés dans la déclaration d'un ami d'un patron d'une fonction" +msgstr "les arguments par défaut du patron ne peuvent pas être utilisés dans les déclarations d'un ami d'un patron" #: cp/pt.c:5139 #, gcc-internal-format @@ -47207,10 +46492,9 @@ msgid "template arguments to %qD do not match original template %qD" msgstr "les arguments du patron %qD ne correspondent pas à ceux du patron original %qD" #: cp/pt.c:5583 -#, fuzzy, gcc-internal-format -#| msgid "use template<> for an explicit specialization" +#, gcc-internal-format msgid "use %%> for an explicit specialization" -msgstr "utilisez template<> pour une spécialisation explicite" +msgstr "utilisez %%> pour une spécialisation explicite" #: cp/pt.c:5710 #, gcc-internal-format @@ -47301,10 +46585,9 @@ msgid "it must be a pointer-to-member of the form %<&X::Y%>" msgstr "il doit être un pointeur vers un membre de la forme %<&X::Y%>" #: cp/pt.c:6146 -#, fuzzy, gcc-internal-format -#| msgid "%qD is not a member of %qT" +#, gcc-internal-format msgid "because it is a member of %qT" -msgstr "%qD n'est pas un membre de %qT" +msgstr "car il est un membre de %qT" #: cp/pt.c:6206 #, gcc-internal-format @@ -47409,10 +46692,9 @@ msgid "in template argument for type %qT " msgstr "dans l'argument de patron pour le type %qT " #: cp/pt.c:6595 -#, fuzzy, gcc-internal-format -#| msgid "in template argument for type %qT " +#, gcc-internal-format msgid "template argument %qE for type %qT not a constant integer" -msgstr "dans l'argument de patron pour le type %qT " +msgstr "l'argument de patron %qE pour le type %qT n'est pas un entier constant" #: cp/pt.c:6656 #, gcc-internal-format @@ -47645,22 +46927,19 @@ msgid "fold of empty expansion over %O" msgstr "repli de l'expansion vide sur %O" #: cp/pt.c:11548 -#, fuzzy, gcc-internal-format -#| msgid "mismatched argument pack lengths while expanding %<%T%>" +#, gcc-internal-format msgid "mismatched argument pack lengths while expanding %qT" -msgstr "les longueurs des paquets d'arguments sont en désaccord durant l'expansion de %<%T%>" +msgstr "les longueurs des paquets d'arguments sont en désaccord durant l'expansion de %qT" #: cp/pt.c:11551 -#, fuzzy, gcc-internal-format -#| msgid "mismatched argument pack lengths while expanding %<%E%>" +#, gcc-internal-format msgid "mismatched argument pack lengths while expanding %qE" -msgstr "les longueurs des paquets d'arguments sont en désaccord durant l'expansion de %<%E%>" +msgstr "les longueurs des paquets d'arguments sont en désaccord durant l'expansion de %qE" #: cp/pt.c:12131 -#, fuzzy, gcc-internal-format -#| msgid " when instantiating default argument for call to %D" +#, gcc-internal-format msgid " when instantiating default argument for call to %qD" -msgstr " lors de l'instanciation de l'argument par défaut pour l'appel à %D" +msgstr " lors de l'instanciation de l'argument par défaut pour l'appel à %qD" #. It may seem that this case cannot occur, since: #. @@ -47876,10 +47155,8 @@ msgid "ambiguous template instantiation for %q#D" msgstr "instanciation de patron ambiguë pour %q#D" #: cp/pt.c:22356 -#, fuzzy -#| msgid "%s %#S" msgid "%s %#qS" -msgstr "%s %#S" +msgstr "%s %#qS" #: cp/pt.c:22380 cp/pt.c:22467 #, gcc-internal-format @@ -47947,10 +47224,9 @@ msgid "duplicate explicit instantiation of %q#T" msgstr "instanciation explicite dupliquée de %q#T" #: cp/pt.c:22910 -#, fuzzy, gcc-internal-format -#| msgid "explicit specialization of %qD after first use" +#, gcc-internal-format msgid "exception specification of %qD depends on itself" -msgstr "spécialisation explicite de %qD après la première utilisation" +msgstr "la spécification d'exception %qD dépend d'elle-même" #. [temp.explicit] #. @@ -47980,16 +47256,14 @@ msgid "%q#T is not a valid type for a template non-type parameter" msgstr "%q#T n'est pas un type valide pour un paramètre non type du patron" #: cp/pt.c:25005 -#, fuzzy, gcc-internal-format -#| msgid "keyword % not allowed outside of templates" +#, gcc-internal-format msgid "keyword % not allowed in declarator-id" -msgstr "le mot-clé % n'est pas permis en dehors des patrons" +msgstr "le mot-clé % n'est pas permis dans declarator-id" #: cp/pt.c:25242 -#, fuzzy, gcc-internal-format -#| msgid "deducing from brace-enclosed initializer list requires #include " +#, gcc-internal-format msgid "deducing from brace-enclosed initializer list requires %<#include %>" -msgstr "la déduction à partir d'une liste d'initialisation entre accolades requiert #include " +msgstr "la déduction à partir d'une liste d'initialisation entre accolades requiert %<#include %>" #: cp/pt.c:25698 #, gcc-internal-format @@ -48002,10 +47276,9 @@ msgid "cannot deduce template arguments for copy-initialization of %qT, as it ha msgstr "impossible de déduire les arguments du patron pour l'initialisation par copie de %qT car il n'a pas de guides de déduction non explicites ou de constructeur déclaré par l'utilisateur" #: cp/pt.c:25843 -#, fuzzy, gcc-internal-format -#| msgid "cannot deduce template arguments for %qT, as it has no deduction guides or user-declared constructors" +#, gcc-internal-format msgid "cannot deduce template arguments of %qT, as it has no viable deduction guides" -msgstr "impossible de déduire les arguments du patron pour %qT car il n'a pas de guides de déduction ou de constructeur déclaré par l'utilisateur" +msgstr "impossible de déduire les arguments du patron de %qT car il n'a pas de guides de déduction viables" #: cp/pt.c:25857 #, gcc-internal-format @@ -48078,16 +47351,14 @@ msgid "can%'t create repository information file %qs" msgstr "ne peut créer le fichier %qs pour le dépôt d'informations" #: cp/rtti.c:313 -#, fuzzy, gcc-internal-format -#| msgid "cannot use typeid with -fno-rtti" +#, gcc-internal-format msgid "cannot use % with -fno-rtti" -msgstr "ne peut utiliser typeid avec -fno-rtti" +msgstr "ne peut utiliser % avec -fno-rtti" #: cp/rtti.c:322 -#, fuzzy, gcc-internal-format -#| msgid "must #include before using typeid" +#, gcc-internal-format msgid "must %<#include %> before using %" -msgstr "il faut appeler #include avant d'utiliser typeid" +msgstr "il faut appeler %<#include %> avant d'utiliser %" #: cp/rtti.c:425 #, gcc-internal-format @@ -48225,18 +47496,17 @@ msgstr "des accolades explicites sont suggérées autour du corps vide de l'inst #: cp/semantics.c:1349 #, gcc-internal-format msgid "catching polymorphic type %q#T by value" -msgstr "" +msgstr "interception du type polymorphique %q#T par valeur" #: cp/semantics.c:1352 #, gcc-internal-format msgid "catching type %q#T by value" -msgstr "" +msgstr "interception du type %q#T par valeur" #: cp/semantics.c:1356 -#, fuzzy, gcc-internal-format -#| msgid "creating pointer to member reference type %qT" +#, gcc-internal-format msgid "catching non-reference type %q#T" -msgstr "création d'un pointeur vers le type de référence au membre %qT" +msgstr "interception du type %q#T qui n'est pas une référence" #: cp/semantics.c:1550 #, gcc-internal-format @@ -48698,15 +47968,14 @@ msgid "lambda-expression in a constant expression" msgstr "expression lambda dans une expression constante" #: cp/tree.c:3962 -#, fuzzy, gcc-internal-format -#| msgid "alignment of %qD increased in -fabi-version=9 (GCC 5.2)" +#, gcc-internal-format msgid "the calling convention for %qT changes in -fabi-version=12 (GCC 8)" -msgstr "l'alignement de %qD a augmenté avec -fabi-version=9 (GCC 5.2)" +msgstr "la convention d'appel pour %qT change avec -fabi-version=12 (GCC 8)" #: cp/tree.c:3967 #, gcc-internal-format msgid " because all of its copy and move constructors are deleted" -msgstr "" +msgstr " car tous ses constructeurs par copie et déplacement sont supprimés" #: cp/tree.c:4328 #, gcc-internal-format @@ -48744,10 +48013,9 @@ msgid "%qE attribute is not supported on this platform" msgstr "l'attribut %qE n'est pas supporté sur cette plate-forme" #: cp/tree.c:4465 -#, fuzzy, gcc-internal-format -#| msgid "redeclaration of %qD adds abi tag %E" +#, gcc-internal-format msgid "redeclaration of %qD adds abi tag %qE" -msgstr "la redéclaration de %qD ajoute l'étiquette d'ABI %E" +msgstr "la redéclaration de %qD ajoute l'étiquette d'ABI %qE" #: cp/tree.c:4485 #, gcc-internal-format @@ -48860,16 +48128,14 @@ msgid "conditional expression between distinct pointer-to-member types %qT and % msgstr "l'expression conditionnelle entre des pointeurs vers des membres de types distincts %qT et %qT a besoin d'un transtypage" #: cp/typeck.c:1480 -#, fuzzy, gcc-internal-format -#| msgid "canonical types differ for identical types %T and %T" +#, gcc-internal-format msgid "canonical types differ for identical types %qT and %qT" -msgstr "les types canoniques diffèrent pour les types identiques %T et %T" +msgstr "les types canoniques diffèrent pour les types identiques %qT et %qT" #: cp/typeck.c:1487 -#, fuzzy, gcc-internal-format -#| msgid "same canonical type node for different types %T and %T" +#, gcc-internal-format msgid "same canonical type node for different types %qT and %qT" -msgstr "nœud de type canonique identique pour les types différents %T et %T" +msgstr "nœud de type canonique identique pour les types différents %qT et %qT" #: cp/typeck.c:1617 #, gcc-internal-format @@ -48954,7 +48220,7 @@ msgstr "le type devant être détruit est %qT, mais le destructeur réfère à % #: cp/typeck.c:2735 #, gcc-internal-format msgid "field %q#D can be accessed via %q#D" -msgstr "" +msgstr "le champ %q#D peut être accessible via %q#D" #: cp/typeck.c:2841 cp/typeck.c:2867 #, gcc-internal-format @@ -49177,10 +48443,8 @@ msgid "unordered comparison on non-floating point argument" msgstr "comparaison non ordonnée sur un argument n'étant pas en virgule flottante" #: cp/typeck.c:5157 -#, fuzzy -#| msgid "implicit conversion from %qT to %qT to match other operand of binary expression" msgid "implicit conversion from %qH to %qI to match other operand of binary expression" -msgstr "conversion implicite de %qT vers %qT pour correspondre à d'autres opérandes de l'expression binaire" +msgstr "conversion implicite de %qH vers %qI pour correspondre à d'autres opérandes de l'expression binaire" #: cp/typeck.c:5167 #, gcc-internal-format @@ -49208,16 +48472,14 @@ msgid "invalid use of a pointer to an incomplete type in pointer arithmetic" msgstr "utilisation invalide d'un pointeur vers un type incomplet dans un pointeur arithmétique" #: cp/typeck.c:5607 -#, fuzzy, gcc-internal-format -#| msgid "taking address of constructor %qE" +#, gcc-internal-format msgid "taking address of constructor %qD" -msgstr "prise de l'adresse du destructeur %qE" +msgstr "prise de l'adresse du destructeur %qD" #: cp/typeck.c:5608 -#, fuzzy, gcc-internal-format -#| msgid "taking address of destructor %qE" +#, gcc-internal-format msgid "taking address of destructor %qD" -msgstr "prise de l'adresse du destructeur %qE" +msgstr "prise de l'adresse du destructeur %qD" #: cp/typeck.c:5624 #, gcc-internal-format @@ -49317,10 +48579,9 @@ msgid "use of an operand of type %qT in % is forbidden" msgstr "l'utilisation d'un opérande du type %qT dans % est interdite" #: cp/typeck.c:6302 -#, fuzzy, gcc-internal-format -#| msgid "use of an operand of type %qT in % is forbidden in C++1z" +#, gcc-internal-format msgid "use of an operand of type %qT in % is forbidden in C++17" -msgstr "l'utilisation d'un opérande du type %qT dans % est interdite" +msgstr "l'utilisation d'un opérande du type %qT dans % est interdite en C++17" #: cp/typeck.c:6309 #, gcc-internal-format @@ -49388,16 +48649,14 @@ msgid "reinterpret_cast from type %qT to type %qT casts away qualifiers" msgstr "utiliser « reinterpret_cast » pour transtyper du type %qT vers le type %qT élimine les qualificatifs" #: cp/typeck.c:6796 -#, fuzzy, gcc-internal-format -#| msgid "useless cast to type %qT" +#, gcc-internal-format msgid "useless cast to type %q#T" -msgstr "transtypage inutile vers le type %qT" +msgstr "transtypage inutile vers le type %q#T" #: cp/typeck.c:6809 -#, fuzzy, gcc-internal-format -#| msgid "type qualifiers ignored on function return type" +#, gcc-internal-format msgid "type qualifiers ignored on cast result type" -msgstr "les qualificatifs de type sont ignorés sur le type retourné par la fonction" +msgstr "les qualificatifs de type sont ignorés sur le type résultant du transtypage" #: cp/typeck.c:7232 #, gcc-internal-format @@ -49405,10 +48664,8 @@ msgid "invalid static_cast from type %qT to type %qT" msgstr "« static_cast » invalide depuis le type %qT vers le type %qT" #: cp/typeck.c:7258 -#, fuzzy -#| msgid "converting from %qT to %qT" msgid "converting from %qH to %qI" -msgstr "conversion de %qT vers %qT" +msgstr "conversion de %qH vers %qI" #: cp/typeck.c:7314 #, gcc-internal-format @@ -49416,26 +48673,20 @@ msgid "invalid cast of an rvalue expression of type %qT to type %qT" msgstr "transtypage invalide d'une expression r-valeur du type %qT vers le type %qT" #: cp/typeck.c:7384 -#, fuzzy -#| msgid "cast from %qT to %qT loses precision" msgid "cast from %qH to %qI loses precision" -msgstr "le transtypage de %qT vers %qT perd en précision" +msgstr "le transtypage de %qH vers %qI perd en précision" #: cp/typeck.c:7409 msgid "cast between incompatible function types from %qH to %qI" -msgstr "" +msgstr "transtypage entre types de fonctions incompatibles de %qH vers %qI" #: cp/typeck.c:7420 -#, fuzzy -#| msgid "comparison between distinct pointer-to-member types %qT and %qT lacks a cast" msgid "cast between incompatible pointer to member types from %qH to %qI" -msgstr "la comparaison entre des pointeurs vers des membres de types distincts %qT et %qT a besoin d'un transtypage" +msgstr "transtypage entre des pointeurs incompatibles vers des types membres de %qH vers %qI" #: cp/typeck.c:7443 cp/typeck.c:7623 -#, fuzzy -#| msgid "cast from %qT to %qT increases required alignment of target type" msgid "cast from %qH to %qI increases required alignment of target type" -msgstr "le transtypage de %qT vers %qT augmente l'alignement requis pour le type ciblé" +msgstr "le transtypage de %qH vers %qI augmente l'alignement requis pour le type ciblé" #: cp/typeck.c:7461 #, gcc-internal-format @@ -49523,46 +48774,32 @@ msgid "invalid conversion to type %qT from type %qT" msgstr "conversion invalide vers le type %qT à partir du type %qT" #: cp/typeck.c:8786 -#, fuzzy -#| msgid "cannot convert %qT to %qT for argument %qP to %qD" msgid "cannot convert %qH to %qI for argument %qP to %qD" -msgstr "ne peut convertir %qT en %qT pour l'argument %qP de %qD" +msgstr "ne peut convertir %qH en %qI pour l'argument %qP de %qD" #: cp/typeck.c:8792 -#, fuzzy -#| msgid "cannot convert %qT to %qT in default argument" msgid "cannot convert %qH to %qI in default argument" -msgstr "ne peut convertir %qT en %qT dans l'argument par défaut" +msgstr "ne peut convertir %qH en %qI dans l'argument par défaut" #: cp/typeck.c:8796 -#, fuzzy -#| msgid "cannot convert %qT to %qT in argument passing" msgid "cannot convert %qH to %qI in argument passing" -msgstr "ne peut convertir %qT en %qT dans le passage d'argument" +msgstr "ne peut convertir %qH en %qI dans le passage d'argument" #: cp/typeck.c:8800 -#, fuzzy -#| msgid "cannot convert %qT to %qT" msgid "cannot convert %qH to %qI" -msgstr "ne peut convertir %qT en %qT" +msgstr "ne peut convertir %qH en %qI" #: cp/typeck.c:8804 -#, fuzzy -#| msgid "cannot convert %qT to %qT in initialization" msgid "cannot convert %qH to %qI in initialization" -msgstr "ne peut convertir %qT en %qT dans l'initialisation" +msgstr "ne peut convertir %qH en %qI dans l'initialisation" #: cp/typeck.c:8808 -#, fuzzy -#| msgid "cannot convert %qT to %qT in return" msgid "cannot convert %qH to %qI in return" -msgstr "ne peut convertir %qT en %qT dans le retour" +msgstr "ne peut convertir %qH en %qI dans le retour" #: cp/typeck.c:8812 -#, fuzzy -#| msgid "cannot convert %qT to %qT in assignment" msgid "cannot convert %qH to %qI in assignment" -msgstr "ne peut convertir %qT en %qT dans l'affectation" +msgstr "ne peut convertir %qH en %qI dans l'affectation" #: cp/typeck.c:8825 #, gcc-internal-format @@ -49664,10 +48901,9 @@ msgid "inconsistent deduction for auto return type: %qT and then %qT" msgstr "déduction incohérente pour le type de retour auto: %qT et puis %qT" #: cp/typeck.c:9201 -#, fuzzy, gcc-internal-format -#| msgid "return-statement with no value, in function returning %qT" +#, gcc-internal-format msgid "return-statement with a value, in function returning %qT" -msgstr "instruction « return » sans valeur dans une fonction retournant %qT" +msgstr "instruction « return » avec une valeur dans une fonction retournant %qT" #: cp/typeck.c:9230 #, gcc-internal-format @@ -49819,7 +49055,7 @@ msgstr " parce que les fonctions virtuelles suivantes sont pures dans %qT:" #: cp/typeck2.c:388 #, gcc-internal-format msgid "\t%#qD" -msgstr "" +msgstr "\t%#qD" #: cp/typeck2.c:441 #, gcc-internal-format @@ -49902,16 +49138,12 @@ msgid "constructor syntax used, but no constructor declared for type %qT" msgstr "syntaxe de constructeur utilisée mais aucun constructeur déclaré pour le type %qT" #: cp/typeck2.c:962 -#, fuzzy -#| msgid "narrowing conversion of %qE from %qT to %qT inside { } is ill-formed in C++11" msgid "narrowing conversion of %qE from %qH to %qI inside { } is ill-formed in C++11" -msgstr "la conversion réductrice de %qE depuis %qT vers %qT à l'intérieur de { } est mal formée en C++11" +msgstr "la conversion réductrice de %qE depuis %qH vers %qI à l'intérieur de { } est mal formée en C++11" #: cp/typeck2.c:973 cp/typeck2.c:987 -#, fuzzy -#| msgid "narrowing conversion of %qE from %qT to %qT inside { }" msgid "narrowing conversion of %qE from %qH to %qI inside { }" -msgstr "conversion réductrice de %qE depuis %qT vers %qT à l'intérieur de { }" +msgstr "conversion réductrice de %qE depuis %qH vers %qI à l'intérieur de { }" #: cp/typeck2.c:977 #, gcc-internal-format @@ -49954,10 +49186,9 @@ msgid "member %qD with uninitialized reference fields" msgstr "membre %qD avec des champs de référence non initialisés" #: cp/typeck2.c:1576 -#, fuzzy, gcc-internal-format -#| msgid "type of %qD does not match original declaration" +#, gcc-internal-format msgid "designator order for field %qD does not match declaration order in %qT" -msgstr "le type de %qD ne correspond pas à la déclaration originale" +msgstr "l'ordre du désignateur pour le champ %qD ne correspond pas à l'ordre de la déclaration dans %qT" #: cp/typeck2.c:1648 #, gcc-internal-format @@ -50015,10 +49246,9 @@ msgid "pointer-to-member-function type %qT requires an lvalue" msgstr "le type pointeur vers une fonction membre %qT requiert une l-valeur" #: cp/typeck2.c:2025 -#, fuzzy, gcc-internal-format -#| msgid "pointer-to-member-function type %qT requires an lvalue" +#, gcc-internal-format msgid "pointer-to-member-function type %qT requires an lvalue before C++2a" -msgstr "le type pointeur vers une fonction membre %qT requiert une l-valeur" +msgstr "le type pointeur vers une fonction membre %qT requiert une l-valeur avant C++2a" #: cp/typeck2.c:2068 #, gcc-internal-format @@ -50246,10 +49476,9 @@ msgid "Invalid form of array reference at %C" msgstr "Forme invalide pour la référence de tableau à %C" #: fortran/array.c:203 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "Array reference at %C cannot have more than %d dimensions" +#, gcc-internal-format, gfc-internal-format msgid "Array reference at %C has more than 7 dimensions" -msgstr "La référence de tableau à %C ne peut pas avoir plus de %d dimensions" +msgstr "La référence de tableau à %C a plus de 7 dimensions" #: fortran/array.c:206 fortran/array.c:307 #, gcc-internal-format, gfc-internal-format @@ -50272,10 +49501,9 @@ msgid "Unexpected coarray designator at %C" msgstr "Désignateur de co-tableau inattendu à %C" #: fortran/array.c:249 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "STAT= attribute in %C misplaced" +#, gcc-internal-format, gfc-internal-format msgid "TEAM= attribute in %C misplaced" -msgstr "Attribut STAT= mal placé dans %C" +msgstr "Attribut TEAM= mal placé dans %C" #: fortran/array.c:261 #, gcc-internal-format, gfc-internal-format @@ -50468,10 +49696,9 @@ msgid "Array constructor value at %L shall not be unlimited polymorphic [F2008: msgstr "La valeur du constructeur du tableau à %L ne sera point polymorphique sans limite [F2008: C4106]" #: fortran/array.c:2041 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "Different CHARACTER lengths (%d/%d) in array constructor at %L" +#, gcc-internal-format, gfc-internal-format msgid "Different CHARACTER lengths (%ld/%ld) in array constructor at %L" -msgstr "Longueurs de CHARACTER différentes (%d/%d) dans le constructeur du tableau à %L" +msgstr "Longueurs de CHARACTER différentes (%ld/%ld) dans le constructeur du tableau à %L" #: fortran/array.c:2160 #, gcc-internal-format @@ -50484,17 +49711,15 @@ msgid "gfc_ref_dimen_size(): Bad dimension" msgstr "gfc_ref_dimen_size(): Mauvaise dimension" #: fortran/array.c:2223 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "Bad array reference at %L" +#, gcc-internal-format, gfc-internal-format msgid "Bad array dimension at %L" -msgstr "Mauvaise référence à un tableau à %L" +msgstr "Mauvaise dimension de tableau à %L" #: fortran/array.c:2249 fortran/data.c:552 fortran/data.c:571 #: fortran/data.c:585 fortran/data.c:714 -#, fuzzy, gcc-internal-format -#| msgid "gimplification failed" +#, gcc-internal-format msgid "Simplification error" -msgstr "la gimplification a échoué" +msgstr "Erreur de simplification" #: fortran/array.c:2359 #, gcc-internal-format @@ -50518,10 +49743,9 @@ msgstr "gfc_find_array_ref(): Pas de référence trouvée" #. if (c == 0) #: fortran/bbt.c:119 -#, fuzzy, gcc-internal-format -#| msgid "insert_bbt(): Duplicate key found!" +#, gcc-internal-format msgid "insert_bbt(): Duplicate key found" -msgstr "insert_bbt(): Clé dupliquée trouvée !" +msgstr "insert_bbt(): Clé dupliquée trouvée" #: fortran/check.c:46 #, gcc-internal-format @@ -50544,16 +49768,14 @@ msgid "%qs argument of %qs intrinsic at %L must be INTEGER or REAL" msgstr "L'argument %qs de l'intrinsèque %qs à %L doit être INTEGER ou REAL" #: fortran/check.c:129 -#, fuzzy, gcc-internal-format -#| msgid "Expected coarray variable as %qs argument to the %s intrinsic at %L" +#, gcc-internal-format msgid "Fortran 2003: Character for %qs argument of %qs intrinsic at %L" -msgstr "Variable co-tableau attendue comme argument %qs de l'intrinsèque %s à %L" +msgstr "Fortran 2003: Caractère pour l'argument %qs de l'intrinsèque %qs à %L" #: fortran/check.c:136 -#, fuzzy, gcc-internal-format -#| msgid "% argument of %qs intrinsic at %L must be INTEGER, REAL or CHARACTER" +#, gcc-internal-format msgid "%qs argument of %qs intrinsic at %L must be INTEGER or REAL or CHARACTER" -msgstr "L'argument % de l'intrinsèque %qs à %L doit être INTEGER, REAL ou CHARACTER" +msgstr "L'argument %qs de l'intrinsèque %qs à %L doit être INTEGER, REAL ou CHARACTER" #: fortran/check.c:159 #, gcc-internal-format @@ -50865,8 +50087,7 @@ msgid "The function passed as OPERATOR at %L shall have two arguments" msgstr "La fonction passée comme OPERATOR à %L aura deux arguments" #: fortran/check.c:1786 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "A argument at %L has type %s but the function passed as OPERATOR at %L returns %s" +#, gcc-internal-format, gfc-internal-format msgid "The A argument at %L has type %s but the function passed as OPERATOR at %L returns %s" msgstr "L'argument A à %L a le type %s mais la fonction passée comme OPERATOR à %L retourne %s" @@ -50954,16 +50175,14 @@ msgid "% at %L and %' at %L cannot both be BOZ literal constants" msgstr "% à %L et % à %L ne peuvent pas être tous les deux des constantes littérales BOZ" #: fortran/check.c:2274 -#, fuzzy, gcc-internal-format -#| msgid "%qs argument of %qs intrinsic at %L must be the same type and kind as %qs" +#, gcc-internal-format msgid "%qs must be of same type and kind as %qs at %L in %qs" -msgstr "L'argument %qs de l'intrinsèque %qs à %L doit être du même type et du même sous-type que %qs" +msgstr "%qs doit être du même type et du même sous-type que %qs à %L dans %qs" #: fortran/check.c:2332 -#, fuzzy, gcc-internal-format -#| msgid "%qs argument of %qs intrinsic at %L cannot be of type %s" +#, gcc-internal-format msgid "Missing %qs argument to %qs intrinsic at %L for %qs of type %qs" -msgstr "L'argument %qs de l'intrinsèque %qs à %L ne peut pas être du type %s" +msgstr "L'argument %qs de l'intrinsèque %qs est manquant à %L pour %qs du type %qs" #: fortran/check.c:2351 #, gcc-internal-format, gfc-internal-format @@ -51061,10 +50280,9 @@ msgid "%qs argument of %qs intrinsic at %L must be of rank 1 or 2" msgstr "L'argument %qs de l'intrinsèque %qs à %L doit être de rang 1 ou 2" #: fortran/check.c:3307 -#, fuzzy, gcc-internal-format -#| msgid "%qs argument of %qs intrinsic at %L not yet supported" +#, gcc-internal-format msgid "BACK argument to %qs intrinsic not yet implemented" -msgstr "L'argument %qs de l'intrinsèque %qs à %L n'est pas encore supporté" +msgstr "L'argument BACK de l'intrinsèque %qs n'est pas encore implémenté" #: fortran/check.c:3460 #, gcc-internal-format @@ -51407,10 +50625,9 @@ msgid "FAILED= argument to NUM_IMAGES at %L" msgstr "Argument FAILED= pour NUM_IMAGES à %L" #: fortran/check.c:5306 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "EVENT argument at %L to the intrinsic EVENT_QUERY shall be of type EVENT_TYPE" +#, gcc-internal-format, gfc-internal-format msgid "TEAM argument at %L to the intrinsic TEAM_NUMBER shall be of type TEAM_TYPE" -msgstr "L'argument EVENT à %L pour l'intrinsèque EVENT_QUERY sera du type EVENT_TYPE" +msgstr "L'argument TEAM à %L pour l'intrinsèque TEAM_NUMBER sera du type TEAM_TYPE" #: fortran/check.c:5332 #, gcc-internal-format, gfc-internal-format @@ -51550,10 +50767,9 @@ msgid "Unused initialization string at %L because variable has zero length" msgstr "Chaîne d'initialisation inutilisée à %L car la variable a une longueur nulle" #: fortran/data.c:176 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "Initialization string at %L was truncated to fit the variable (%d/%d)" +#, gcc-internal-format, gfc-internal-format msgid "Initialization string at %L was truncated to fit the variable (%ld/%ld)" -msgstr "La chaine d'initialisation à %L a été tronquée pour tenir dans la variable (%d/%d)" +msgstr "La chaine d'initialisation à %L a été tronquée pour tenir dans la variable (%ld/%ld)" #: fortran/data.c:265 #, gcc-internal-format @@ -51641,10 +50857,9 @@ msgid "End of scalar initializer expected at %C" msgstr "Fin de l'initialisation du scalaire attendue à %C" #: fortran/decl.c:744 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "Empty old style initializer list at %C" +#, gcc-internal-format, gfc-internal-format msgid "Expected constant array-spec in initializer list at %L" -msgstr "Liste d'initialisation vide dans l'ancien style à %C" +msgstr "array-spec contant attendu dans la liste d'initialisation à %L" #: fortran/decl.c:753 #, gcc-internal-format, gfc-internal-format @@ -51777,16 +50992,14 @@ msgid "CHARACTER length must be a constant at %L" msgstr "La longueur de CHARACTER doit être une constante à %L" #: fortran/decl.c:1567 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "CHARACTER expression at %L is being truncated (%d/%d)" +#, gcc-internal-format, gfc-internal-format msgid "CHARACTER expression at %L is being truncated (%ld/%ld)" -msgstr "L'expression CHARACTER à %L est tronquée (%d/%d)" +msgstr "L'expression CHARACTER à %L est tronquée (%ld/%ld)" #: fortran/decl.c:1575 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "The CHARACTER elements of the array constructor at %L must have the same length (%d/%d)" +#, gcc-internal-format, gfc-internal-format msgid "The CHARACTER elements of the array constructor at %L must have the same length (%ld/%ld)" -msgstr "Les éléments CHARACTER dans le constructeur du tableau à %L doivent avoir la même longueur (%d/%d)" +msgstr "Les éléments CHARACTER dans le constructeur du tableau à %L doivent avoir la même longueur (%ld/%ld)" #: fortran/decl.c:1666 #, gcc-internal-format @@ -51854,10 +51067,9 @@ msgid "Array component of structure at %C must have an explicit shape" msgstr "Le composant tableau de structures à %C doit avoir une forme explicite" #: fortran/decl.c:2041 -#, fuzzy, gcc-internal-format -#| msgid "a parameter list with an ellipsis can%'t match an empty parameter name list declaration" +#, gcc-internal-format msgid "Type parameter %qs at %C has no corresponding entry in the type parameter name list at %L" -msgstr "une liste de paramètres avec élision ne peut concorder avec la déclaration d'une liste de noms de paramètres vide" +msgstr "Le paramètre de type %qs à %C n'a pas d'entrée correspondante dans la liste des noms de paramètres de types à %L" #: fortran/decl.c:2098 #, gcc-internal-format, gfc-internal-format @@ -51890,22 +51102,19 @@ msgid "Function name %qs not allowed at %C" msgstr "Le nom de fonction %qs n'est pas permis à %C" #: fortran/decl.c:2243 -#, fuzzy, gcc-internal-format -#| msgid "VALUE is not allowed inside of BLOCK at %C" +#, gcc-internal-format msgid "%qs not allowed outside STRUCTURE at %C" -msgstr "VALUE n'est pas autorisé à l'intérieur de BLOCK à %C" +msgstr "%qs n'est pas autorisé en dehors de STRUCTURE à %C" #: fortran/decl.c:2245 -#, fuzzy, gcc-internal-format -#| msgid "STRUCTURE at %C is a DEC extension, enable with -fdec-structure" +#, gcc-internal-format msgid "%qs at %C is a DEC extension, enable with %<-fdec-structure%>" -msgstr "STRUCTURE à %C est une extension DEC, activez-la avec -fdec-structure" +msgstr "%qs à %C est une extension DEC, activez-la avec %<-fdec-structure%>" #: fortran/decl.c:2252 -#, fuzzy, gcc-internal-format -#| msgid "%qs function cannot have arguments" +#, gcc-internal-format msgid "%qs entity cannot have attributes at %C" -msgstr "la fonction avec l'attribut %qs ne peut pas avoir d'argument" +msgstr "L'entité %qs ne peut pas avoir d'attribut à %C" #: fortran/decl.c:2289 #, gcc-internal-format @@ -51923,10 +51132,9 @@ msgid "%qs at %C is a redefinition of the declaration in the corresponding inter msgstr "%qs à %C est une redéfinition de la déclaration dans l'interface correspondante pour MODULE PROCEDURE %qs" #: fortran/decl.c:2363 -#, fuzzy, gcc-internal-format -#| msgid "Dummy %qs at %L cannot have an initializer" +#, gcc-internal-format msgid "%qs entity cannot have an initializer at %C" -msgstr "Le muet %qs à %L ne peut pas avoir une initialisation" +msgstr "L'entité %qs ne peut pas avoir un initialiseur à %C" #: fortran/decl.c:2389 fortran/decl.c:8199 #, gcc-internal-format, gfc-internal-format @@ -51981,19 +51189,17 @@ msgstr "L'initialisation du composant allouable à %C n'est pas permise" #: fortran/decl.c:2561 #, gcc-internal-format, gfc-internal-format msgid "The component with KIND or LEN attribute at %C does not not appear in the type parameter list at %L" -msgstr "" +msgstr "Le composant avec l'attribut KIND ou LEN à %C n'apparaît pas dans la liste des paramètres de type à %L" #: fortran/decl.c:2569 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "Entity %qs at %L has a deferred type parameter and requires either the POINTER or ALLOCATABLE attribute" +#, gcc-internal-format, gfc-internal-format msgid "The component at %C that appears in the type parameter list at %L has neither the KIND nor LEN attribute" -msgstr "L'entité %qs à %L a un paramètre de type différé et requiert soit l'attribut POINTER ou ALLOCATABLE" +msgstr "Le composant à %C qui apparaît dans la liste des paramètres de types à %L n'a ni l'attribut KIND ni l'attribut LEN" #: fortran/decl.c:2577 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "The pointer component %qs of %qs at %L is a type that has not been declared" +#, gcc-internal-format, gfc-internal-format msgid "The component at %C which is a type parameter must be a scalar" -msgstr "Le composant pointeur %qs de %qs à %L est un type qui n'a pas été déclaré" +msgstr "Le composant à %C, qui est un paramètre de type, doit être un scalaire" #: fortran/decl.c:2640 fortran/decl.c:2676 #, gcc-internal-format, gfc-internal-format @@ -52058,47 +51264,42 @@ msgstr "Nom de structure attendu après RECORD à %C" #: fortran/decl.c:3247 #, gcc-internal-format, gfc-internal-format msgid "The type parameter spec list at %C cannot contain both ASSUMED and DEFERRED parameters" -msgstr "" +msgstr "La liste de spec des paramètres de type à %C ne peut pas contenir les paramètres ASSUMED et DEFERRED en même temps" #: fortran/decl.c:3271 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "Kind type parameter for entity at %L differs from the kind type parameter of the typespec" +#, gcc-internal-format, gfc-internal-format msgid "The type parameter spec list at %C does not contain enough parameter expressions" -msgstr "Le paramètre de sous-type pour l'entité à %L diffère du paramètre de sous-type du typespec" +msgstr "La liste de spec des paramètres de types à %C ne contient pas assez d'expressions de paramètres" #: fortran/decl.c:3295 -#, fuzzy, gcc-internal-format -#| msgid "the first parameter of % cannot have a default argument" +#, gcc-internal-format msgid "The derived parameter '%qs' at %C does not have a default value" -msgstr "le premier paramètre de % ne peut pas avoir d'argument par défaut" +msgstr "Le paramètre dérivé %qs à %C n'a pas de valeur par défaut" #: fortran/decl.c:3327 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "Expression at %L must be of INTEGER type, found %s" +#, gcc-internal-format, gfc-internal-format msgid "The parameter expression at %C must be of INTEGER type and not %s type" -msgstr "L'expression à %L doit être du type INTEGER et non %s" +msgstr "L'expression paramètre à %C doit être de type INTEGER et non de type %s" #: fortran/decl.c:3355 #, gcc-internal-format msgid "The KIND parameter '%qs' at %C cannot either be ASSUMED or DEFERRED" -msgstr "" +msgstr "Le paramètre KIND %qs à %C ne peut pas être ASSUMED ou DEFERRED" #: fortran/decl.c:3362 -#, fuzzy, gcc-internal-format -#| msgid "Array %qs at %L is a variable, which does not reduce to a constant expression" +#, gcc-internal-format msgid "The value for the KIND parameter '%qs' at %C does not reduce to a constant expression" -msgstr "Le tableau %qs à %L est une variable qui ne se réduit pas en une expression constante" +msgstr "La valeur pour le paramètre KIND à %qs à %C ne se réduit pas en une expression constante" #: fortran/decl.c:3377 #, gcc-internal-format, gfc-internal-format msgid "The type parameter spec list at %C contains too many parameter expressions" -msgstr "" +msgstr "La liste de spec des paramètres de type à %C contient trop d'expressions de paramètres" #: fortran/decl.c:3386 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "parametrized derived type argument" +#, gcc-internal-format, gfc-internal-format msgid "Parameterized derived type at %C is ambiguous" -msgstr "argument de type dérivé paramétrisé" +msgstr "Le type dérivé paramétrisé à %C est ambigu" #: fortran/decl.c:3649 #, gcc-internal-format, gfc-internal-format @@ -52228,10 +51429,9 @@ msgid "Duplicate %s attribute at %L" msgstr "Attribut %s dupliqué à %L" #: fortran/decl.c:4954 -#, fuzzy, gcc-internal-format -#| msgid "%s at %L is a DEC extension, enable with -fdec-static" +#, gcc-internal-format msgid "%s at %L is a DEC extension, enable with %<-fdec-static%>" -msgstr "%s à %L est une extension DEC, activez-la avec -fdec-static" +msgstr "%s à %L est une extension DEC, activez-la avec %<-fdec-static%>" #: fortran/decl.c:4971 #, gcc-internal-format, gfc-internal-format @@ -52239,40 +51439,34 @@ msgid "ALLOCATABLE attribute at %C in a TYPE definition" msgstr "Attribut ALLOCATABLE à %C dans une définition TYPE" #: fortran/decl.c:4980 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "Attribute %s at %L in a TYPE definition" +#, gcc-internal-format, gfc-internal-format msgid "KIND attribute at %C in a TYPE definition" -msgstr "Attribut %s à %L dans une définition TYPE" +msgstr "Attribut KIND à %C dans une définition TYPE" #: fortran/decl.c:4988 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "%qs argument of %qs intrinsic at %L must be INTEGER" +#, gcc-internal-format, gfc-internal-format msgid "Component with KIND attribute at %C must be INTEGER" -msgstr "L'argument %qs de l'intrinsèque %qs à %L doit être un INTEGER" +msgstr "Le composant avec l'attribut KIND à %C doit être un INTEGER" #: fortran/decl.c:4995 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "Component %qs with CLASS at %C must be allocatable or pointer" +#, gcc-internal-format, gfc-internal-format msgid "Component with KIND attribute at %C must be default integer kind (%d)" -msgstr "Le composant %qs avec CLASS à %C doit être allouable ou un pointeur" +msgstr "Le composant avec l'attribut KIND à %C doit être du sous-type entier par défaut (%d)" #: fortran/decl.c:5004 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "ALLOCATABLE attribute at %C in a TYPE definition" +#, gcc-internal-format, gfc-internal-format msgid "LEN attribute at %C in a TYPE definition" -msgstr "Attribut ALLOCATABLE à %C dans une définition TYPE" +msgstr "Attribut LEN à %C dans une définition TYPE" #: fortran/decl.c:5012 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "%qs argument of %qs intrinsic at %L must be INTEGER" +#, gcc-internal-format, gfc-internal-format msgid "Component with LEN attribute at %C must be INTEGER" -msgstr "L'argument %qs de l'intrinsèque %qs à %L doit être un INTEGER" +msgstr "Le composant avec l'attribut LEN à %C doit être un INTEGER" #: fortran/decl.c:5019 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "Component %qs with CLASS at %C must be allocatable or pointer" +#, gcc-internal-format, gfc-internal-format msgid "Component with LEN attribute at %C must be default integer kind (%d)" -msgstr "Le composant %qs avec CLASS à %C doit être allouable ou un pointeur" +msgstr "Le composant avec l'attribut LEN à %C doit être du sous-type entier par défaut (%d)" #: fortran/decl.c:5028 #, gcc-internal-format, gfc-internal-format @@ -52290,10 +51484,9 @@ msgid "%s attribute at %L is not allowed outside of the specification part of a msgstr "L'attribut %s à %L n'est pas permis en dehors de la partie de la spécification d'un module" #: fortran/decl.c:5066 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "Attribute at %L is not allowed in a TYPE definition" +#, gcc-internal-format, gfc-internal-format msgid "Attribute at %L is not allowed outside a TYPE definition" -msgstr "L'attribut à %L n'est pas permis dans une définition TYPE" +msgstr "L'attribut à %L n'est pas permis en dehors d'une définition TYPE" #: fortran/decl.c:5079 #, gcc-internal-format, gfc-internal-format @@ -52458,10 +51651,9 @@ msgid "Alternate-return argument at %C" msgstr "Argument de retour alternatif à %C" #: fortran/decl.c:5970 fortran/decl.c:5978 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "Left parenthesis required after %<*%>" +#, gcc-internal-format, gfc-internal-format msgid "A parameter name is required at %C" -msgstr "Parenthèse gauche requise après %<*%>" +msgstr "Un nom de paramètre est requis à %C" #: fortran/decl.c:6018 #, gcc-internal-format @@ -52469,10 +51661,9 @@ msgid "Name %qs at %C is the name of the procedure" msgstr "Le nom %qs à %C est le nom de la procédure" #: fortran/decl.c:6031 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "Expected another dimension in array declaration at %C" +#, gcc-internal-format, gfc-internal-format msgid "Expected parameter list in type declaration at %C" -msgstr "Une autre dimension est attendue dans la déclaration de tableau à %C" +msgstr "Liste de paramètres attendue dans la déclaration du type à %C" #: fortran/decl.c:6034 #, gcc-internal-format, gfc-internal-format @@ -52480,10 +51671,9 @@ msgid "Unexpected junk in formal argument list at %C" msgstr "Rebut inattendu dans la liste d'arguments formels à %C" #: fortran/decl.c:6052 -#, fuzzy, gcc-internal-format -#| msgid "Duplicate name %qs in association at %C" +#, gcc-internal-format msgid "Duplicate name %qs in parameter list at %C" -msgstr "Nom %qs dupliqué dans l'association à %C" +msgstr "Nom %qs en double dans la liste des paramètres à %C" #: fortran/decl.c:6055 #, gcc-internal-format @@ -52895,10 +52085,9 @@ msgid "Unexpected characters in PARAMETER statement at %C" msgstr "Caractères inattendus dans l'instruction PARAMETER à %C" #: fortran/decl.c:8729 fortran/decl.c:8785 -#, fuzzy, gcc-internal-format -#| msgid "%s at %L is a DEC extension, enable with -fdec-static" +#, gcc-internal-format msgid "%s at %C is a DEC extension, enable with %<-fdec-static%>" -msgstr "%s à %L est une extension DEC, activez-la avec -fdec-static" +msgstr "%s à %C est une extension DEC, activez-la avec %<-fdec-static%>" #: fortran/decl.c:8764 #, gcc-internal-format, gfc-internal-format @@ -53051,10 +52240,9 @@ msgid "Junk after UNION statement at %C" msgstr "Rebut après l'instruction UNION à %C" #: fortran/decl.c:9546 -#, fuzzy, gcc-internal-format -#| msgid "STRUCTURE at %C is a DEC extension, enable with -fdec-structure" +#, gcc-internal-format msgid "%s at %C is a DEC extension, enable with %<-fdec-structure%>" -msgstr "STRUCTURE à %C est une extension DEC, activez-la avec -fdec-structure" +msgstr "%s à %C est une extension DEC, activez-la avec %<-fdec-structure%>" #: fortran/decl.c:9560 #, gcc-internal-format, gfc-internal-format @@ -53092,10 +52280,9 @@ msgid "Derived type definition of %qs at %C has already been defined" msgstr "La définition du type dérivé %qs à %C a déjà été défini" #: fortran/decl.c:9862 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "Syntax error in CHARACTER declaration at %C" +#, gcc-internal-format, gfc-internal-format msgid "Garbage after PARAMETERIZED TYPE declaration at %C" -msgstr "Erreur de syntaxe dans la déclaration CHARACTER à %C" +msgstr "Rebut après la déclaration PARAMETERIZED TYPE à %C" #: fortran/decl.c:9946 #, gcc-internal-format, gfc-internal-format @@ -53313,10 +52500,9 @@ msgid "Unknown procedure name %qs at %C" msgstr "Nom de procédure %qs inconnu à %C" #: fortran/decl.c:10854 -#, fuzzy, gcc-internal-format -#| msgid "%qs at %C is already defined as FINAL procedure!" +#, gcc-internal-format msgid "%qs at %C is already defined as FINAL procedure" -msgstr "%qs à %C est déjà défini comme procédure FINAL !" +msgstr "%qs à %C est déjà défini comme procédure FINAL" #: fortran/decl.c:10924 #, gcc-internal-format, gfc-internal-format @@ -53331,13 +52517,12 @@ msgstr "Erreur de syntaxe dans l'instruction !GCC$ ATTRIBUTES à %C" #: fortran/decl.c:10990 #, gcc-internal-format msgid "% directive requires a non-negative integral constant less than or equal to %u at %C" -msgstr "" +msgstr "Directive % requiert une constante entière non négative plus petite ou égale à %u à %C" #: fortran/decl.c:11004 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "Syntax error in FORALL iterator at %C" +#, gcc-internal-format, gfc-internal-format msgid "Syntax error in !GCC$ UNROLL directive at %C" -msgstr "Erreur de syntaxe dans l'itérateur FORALL à %C" +msgstr "Erreur de syntaxe dans la directive !GCC$ UNROLL à %C" #: fortran/dependency.c:105 #, gcc-internal-format @@ -53380,10 +52565,9 @@ msgid "show_ref(): Bad component code" msgstr "show_ref(): Mauvais code de composant" #: fortran/dump-parse-tree.c:575 -#, fuzzy, gcc-internal-format -#| msgid "show_expr(): Bad intrinsic in expression!" +#, gcc-internal-format msgid "show_expr(): Bad intrinsic in expression" -msgstr "show_expr(): Mauvais intrinsèque dans l'expression !" +msgstr "show_expr(): Mauvais intrinsèque dans l'expression" #: fortran/dump-parse-tree.c:618 #, gcc-internal-format @@ -53396,10 +52580,9 @@ msgid "show_code_node(): Bad statement code" msgstr "show_code_node(): Mauvais code d'instruction" #: fortran/dump-parse-tree.c:3150 fortran/dump-parse-tree.c:3242 -#, fuzzy, gcc-internal-format -#| msgid "cannot convert to a pointer type" +#, gcc-internal-format msgid "Cannot convert %qs to interoperable type at %L" -msgstr "ne peut convertir en un type pointeur" +msgstr "Ne peut convertir %qs en un type interopérable à %L" #: fortran/error.c:335 #, gcc-internal-format, gfc-internal-format @@ -53697,10 +52880,9 @@ msgid "Arithmetic NaN of bit-wise transferred BOZ at %L. This check can be disab msgstr "NaN (pas un nombre) arithmétique du BOZ transféré bit à bit à %L. Cette vérification peut être désactivée avec l'option %<-fno-range-check%>" #: fortran/expr.c:3386 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "Sorry, the event component of derived type at %L is not yet supported" +#, gcc-internal-format, gfc-internal-format msgid "The assignment to a KIND or LEN component of a parameterized type at %L is not allowed" -msgstr "Désolé, le composant de l'événement du type dérivé à %L n'est pas encore supporté" +msgstr "L'affectation à un composant KIND ou LEN d'un type paramétrisé à %L n'est pas permis" #: fortran/expr.c:3407 #, gcc-internal-format, gfc-internal-format @@ -53883,7 +53065,7 @@ msgstr "La cible de l'affectation du pointeur a l'attribut PROTECTED à %L" #: fortran/expr.c:3917 #, gcc-internal-format, gfc-internal-format msgid "Assignment to contiguous pointer from non-contiguous target at %L" -msgstr "" +msgstr "Affectation à un pointeur contigu depuis une cible non contigüe à %L" #: fortran/expr.c:3956 #, gcc-internal-format, gfc-internal-format @@ -54028,16 +53210,14 @@ msgid "Removing call to function %qs at %L" msgstr "Suppression de l'appel à la fonction %qs à %L" #: fortran/frontend-passes.c:1263 fortran/frontend-passes.c:1302 -#, fuzzy, gcc-internal-format -#| msgid "expected expression" +#, gcc-internal-format msgid "bad expression" -msgstr "expression attendue" +msgstr "mauvaise expression" #: fortran/frontend-passes.c:1298 -#, fuzzy, gcc-internal-format -#| msgid "bad move" +#, gcc-internal-format msgid "bad op" -msgstr "mauvais déplacement" +msgstr "mauvais op" #: fortran/frontend-passes.c:2151 #, gcc-internal-format @@ -54055,16 +53235,14 @@ msgid "Variable %qs at %L not definable inside loop beginning at %L as INTENT(IN msgstr "La variable %qs à %L n'est pas définissable à l'intérieur de la boucle commençant à %L comme argument INTENT(INOUT) de la sous-routine %qs" #: fortran/frontend-passes.c:2627 fortran/frontend-passes.c:2651 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "Array reference at %L is out of bounds (%ld < %ld) in codimension %d" +#, gcc-internal-format, gfc-internal-format msgid "Array reference at %L out of bounds (%ld < %ld) in loop beginning at %L" -msgstr "La référence au tableau à %L est en dehors des limites (%ld < %ld) dans la co-dimension %d" +msgstr "La référence au tableau à %L est en dehors des limites (%ld < %ld) dans la boucle commençant à %L" #: fortran/frontend-passes.c:2636 fortran/frontend-passes.c:2660 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "Array reference at %L is out of bounds (%ld > %ld) in codimension %d" +#, gcc-internal-format, gfc-internal-format msgid "Array reference at %L out of bounds (%ld > %ld) in loop beginning at %L" -msgstr "La référence au tableau à %L est en dehors des limites (%ld > %ld) dans la co-dimension %d" +msgstr "La référence au tableau à %L est en dehors des limites (%ld > %ld) dans la boucle commençant à %L" #: fortran/frontend-passes.c:2720 #, gcc-internal-format @@ -54087,10 +53265,9 @@ msgid "Scalarization using DIMEN_RANGE unimplemented" msgstr "La transformation en scalaire grâce à DIMEN_RANGE n'est pas implémentée" #: fortran/frontend-passes.c:4403 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "containing loop" +#, gcc-internal-format, gfc-internal-format msgid "Interchanging loops at %L" -msgstr "boucle contenante" +msgstr "Interchangeage de boucles à %L" #: fortran/gfortranspec.c:145 #, gcc-internal-format @@ -54238,10 +53415,9 @@ msgid "check_result_characteristics (2): Unexpected result %i of gfc_dep_compare msgstr "check_result_characteristics (2): Résultat %i inattendu en provenance de gfc_dep_compare_expr" #: fortran/interface.c:1810 -#, fuzzy, gcc-internal-format -#| msgid "Procedure %qs in %s at %L has no explicit interface" +#, gcc-internal-format msgid "Procedure %qs in %s at %L has no explicit interface; did you mean %qs?" -msgstr "La procédure %qs dans %s à %L n'a pas d'interface explicite" +msgstr "La procédure %qs dans %s à %L n'a pas d'interface explicite, vouliez-vous employer %qs ?" #: fortran/interface.c:1815 #, gcc-internal-format @@ -54249,10 +53425,9 @@ msgid "Procedure %qs in %s at %L has no explicit interface" msgstr "La procédure %qs dans %s à %L n'a pas d'interface explicite" #: fortran/interface.c:1819 -#, fuzzy, gcc-internal-format -#| msgid "Procedure %qs in %s at %L is neither function nor subroutine" +#, gcc-internal-format msgid "Procedure %qs in %s at %L is neither function nor subroutine; did you mean %qs?" -msgstr "La procédure %qs dans %s à %L n'est ni une fonction ni une sous-routine" +msgstr "La procédure %qs dans %s à %L n'est ni une fonction ni une sous-routine; vouliez-vous employer %qs ?" #: fortran/interface.c:1823 #, gcc-internal-format @@ -54410,10 +53585,9 @@ msgid "Fortran 2003: Scalar CHARACTER actual argument with array dummy argument msgstr "Fortran 2003: Argument effectif scalaire CHARACTER avec un argument muet tableau %qs à %L" #: fortran/interface.c:2885 -#, fuzzy, gcc-internal-format -#| msgid "Keyword argument %qs at %L is not in the procedure" +#, gcc-internal-format msgid "Keyword argument %qs at %L is not in the procedure; did you mean %qs?" -msgstr "L'argument mot-clé %qs à %L n'est pas dans une procédure" +msgstr "L'argument mot-clé %qs à %L n'est pas dans une procédure, vouliez-vous employer %qs ?" #: fortran/interface.c:2889 #, gcc-internal-format @@ -54606,10 +53780,9 @@ msgid "Coindexed polymorphic actual argument at %L is passed polymorphic dummy a msgstr "L'argument effectif polymorphique co-indexé à %L est passé à l'argument muet polymorphique %qs" #: fortran/interface.c:3614 -#, fuzzy, gcc-internal-format -#| msgid "Procedure %qs called at %L is not explicitly declared" +#, gcc-internal-format msgid "Procedure %qs called at %L is not explicitly declared; did you mean %qs?" -msgstr "La procédure %qs appelée à %L n'est pas explicitement déclarée" +msgstr "La procédure %qs appelée à %L n'est pas explicitement déclarée, vouliez-vous employer %qs ?" #: fortran/interface.c:3618 fortran/interface.c:3628 #, gcc-internal-format @@ -55127,10 +54300,9 @@ msgid "Duplicate %s label specification at %C" msgstr "Spécification de l'étiquette %s dupliquée à %C" #: fortran/io.c:1521 fortran/io.c:1538 fortran/io.c:1559 -#, fuzzy, gcc-internal-format -#| msgid "%s at %L is a DEC extension, enable with -fdec-static" +#, gcc-internal-format msgid "%s at %C is a DEC extension, enable with %<-fdec%>" -msgstr "%s à %L est une extension DEC, activez-la avec -fdec-static" +msgstr "%s à %C est une extension DEC, activez-la avec %<-fdec%>" #: fortran/io.c:1612 #, gcc-internal-format, gfc-internal-format @@ -55947,28 +55119,24 @@ msgid "FAIL IMAGE statement at %C" msgstr "Instruction FAIL IMAGE à %C" #: fortran/match.c:3363 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "IMPORT statement at %C" +#, gcc-internal-format, gfc-internal-format msgid "FORM TEAM statement at %C" -msgstr "Instruction IMPORT à %C" +msgstr "Instruction FORM TEAM à %C" #: fortran/match.c:3402 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "CLASS statement at %C" +#, gcc-internal-format, gfc-internal-format msgid "CHANGE TEAM statement at %C" -msgstr "Instruction CLASS à %C" +msgstr "Instruction CHANGE TEAM à %C" #: fortran/match.c:3432 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "ENTRY statement at %C" +#, gcc-internal-format, gfc-internal-format msgid "END TEAM statement at %C" -msgstr "Instruction ENTRY à %C" +msgstr "Instruction END TEAM à %C" #: fortran/match.c:3456 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "SYNC statement at %C" +#, gcc-internal-format, gfc-internal-format msgid "SYNC TEAM statement at %C" -msgstr "Instruction SYNC à %C" +msgstr "Instruction SYNC TEAM à %C" #: fortran/match.c:3499 #, gcc-internal-format, gfc-internal-format @@ -56053,7 +55221,7 @@ msgstr "typespec dans ALLOCATE à %L" #: fortran/match.c:4157 #, gcc-internal-format, gfc-internal-format msgid "The type parameter spec list in the type-spec at %L cannot contain DEFERRED parameters" -msgstr "" +msgstr "La liste de spec des paramètres de types dans le type-spec à %L ne peut pas contenir de paramètre DEFERRED" #: fortran/match.c:4191 #, gcc-internal-format, gfc-internal-format @@ -56061,10 +55229,9 @@ msgid "Bad allocate-object at %C for a PURE procedure" msgstr "Mauvais objet d'allocation à %C pour une procédure PURE" #: fortran/match.c:4206 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "Illegal allocate-object at %C for a PURE procedure" +#, gcc-internal-format, gfc-internal-format msgid "Incompatible allocate-object at %C for CHARACTER type-spec at %L" -msgstr "Objet allouable illégal à %C pour une procédure PURE" +msgstr "Objet allouable incompatible à %C pour la spec de type CHARACTER à %L" #: fortran/match.c:4228 #, gcc-internal-format, gfc-internal-format @@ -56362,7 +55529,7 @@ msgstr "La spécification de type ne spécifiera point un type dérivé d'une s #: fortran/match.c:6353 #, gcc-internal-format, gfc-internal-format msgid "All the LEN type parameters in the TYPE IS statement at %C must be ASSUMED" -msgstr "" +msgstr "Tous les paramètres de type LEN dans l'instruction TYPE IS à %C doivent être ASSUMED" #: fortran/match.c:6364 #, gcc-internal-format, gfc-internal-format @@ -56707,10 +55874,9 @@ msgstr "Impossible de lire le fichier module %qs ouvert à %C car il a été cr # %s est « sub » ou rien. #: fortran/module.c:7064 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "Can't USE the same %smodule we're building!" +#, gcc-internal-format, gfc-internal-format msgid "Can't USE the same %smodule we're building" -msgstr "Impossible d'utiliser le même %smodule que celui qui est en cours de construction !" +msgstr "Impossible d'utiliser le même %smodule que celui qui est en cours de construction" #: fortran/openmp.c:296 fortran/openmp.c:397 fortran/openmp.c:692 #: fortran/openmp.c:3169 @@ -58191,7 +57357,7 @@ msgstr "Instruction DATA à %C après la première instruction exécutable" #: fortran/parse.c:5423 #, gcc-internal-format msgid "% directive does not commence a loop at %C" -msgstr "" +msgstr "la directive % ne commence pas à la boucle à %C" #: fortran/parse.c:5538 #, gcc-internal-format @@ -58225,19 +57391,15 @@ msgstr "Le nom de liaison globale %qs à %L est déjà utilisé comme un(e) %s msgid "Global name %qs at %L is already being used as a %s at %L" msgstr "Le nom global %qs à %L est déjà utilisé comme un(e) %s à %L" -# Le dernier %s est un mot clé tel que « FUNCTION », « PROGRAM », « MODULE » etc, d'où le « un(e) » #: fortran/parse.c:5794 -#, fuzzy, gcc-internal-format -#| msgid "Global binding name %qs at %L is already being used as a %s at %L" +#, gcc-internal-format msgid "Global binding name %qs at %L is already being used at %L" -msgstr "Le nom de liaison globale %qs à %L est déjà utilisé comme un(e) %s à %L" +msgstr "Le nom de liaison globale %qs à %L est déjà utilisé à %L" -# Le dernier %s est un mot clé tel que « FUNCTION », « PROGRAM », « MODULE » etc, d'où le « un(e) » #: fortran/parse.c:5797 -#, fuzzy, gcc-internal-format -#| msgid "Global name %qs at %L is already being used as a %s at %L" +#, gcc-internal-format msgid "Global name %qs at %L is already being used at %L" -msgstr "Le nom global %qs à %L est déjà utilisé comme un(e) %s à %L" +msgstr "Le nom global %qs à %L est déjà utilisé à %L" #: fortran/parse.c:5819 #, gcc-internal-format, gfc-internal-format @@ -58563,10 +57725,9 @@ msgid "No initializer for allocatable component %qs given in the structure const msgstr "Aucune initialisation pour le composant allouable %qs donné dans le constructeur de structure à %C" #: fortran/primary.c:2769 -#, fuzzy, gcc-internal-format -#| msgid "No initializer for component %qs given in the structure constructor at %C!" +#, gcc-internal-format msgid "No initializer for component %qs given in the structure constructor at %C" -msgstr "Pas d'initialisation donnée pour le composant %qs dans le constructeur de structure à %C !" +msgstr "Pas d'initialisation donnée pour le composant %qs dans le constructeur de structure à %C" #: fortran/primary.c:2817 #, gcc-internal-format @@ -58579,28 +57740,24 @@ msgid "Structure constructor with named arguments at %C" msgstr "Constructeur de structure avec des arguments nommés à %C" #: fortran/primary.c:2852 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "Component initializer without name after component named %s at %L!" +#, gcc-internal-format, gfc-internal-format msgid "Component initializer without name after component named %s at %L" -msgstr "Initialisation de composant sans nom après le composant nommé %s à %L !" +msgstr "Initialisation de composant sans nom après le composant nommé %s à %L" #: fortran/primary.c:2857 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "Too many components in structure constructor at %L!" +#, gcc-internal-format, gfc-internal-format msgid "Too many components in structure constructor at %L" -msgstr "Trop de composants dans le constructeur de structure à %L !" +msgstr "Trop de composants dans le constructeur de structure à %L" #: fortran/primary.c:2894 -#, fuzzy, gcc-internal-format -#| msgid "Component %qs is initialized twice in the structure constructor at %L!" +#, gcc-internal-format msgid "Component %qs is initialized twice in the structure constructor at %L" -msgstr "Le composant %qs est initialisé deux fois dans le constructeur de structure à %L !" +msgstr "Le composant %qs est initialisé deux fois dans le constructeur de structure à %L" #: fortran/primary.c:2906 -#, fuzzy, gcc-internal-format -#| msgid "Coindexed expression to pointer component %qs in structure constructor at %L!" +#, gcc-internal-format msgid "Coindexed expression to pointer component %qs in structure constructor at %L" -msgstr "Expression co-indexée vers le composant pointeur %qs dans le constructeur de structure à %L !" +msgstr "Expression co-indexée vers le composant pointeur %qs dans le constructeur de structure à %L" #: fortran/primary.c:2960 #, gcc-internal-format @@ -58903,10 +58060,9 @@ msgid "Fortran 2008: COMMON block %qs with binding label at %L sharing the ident msgstr "Fortran 2008: Le bloc COMMON %qs avec l'étiquette de liaison à %L partage l'identificateur avec l'entité de bloc non COMMON globale à %L" #: fortran/resolve.c:1059 -#, fuzzy, gcc-internal-format -#| msgid "COMMON block at %L with binding label %s uses the same global identifier as entity at %L" +#, gcc-internal-format msgid "COMMON block at %L with binding label %qs uses the same global identifier as entity at %L" -msgstr "Le bloc COMMON à %L avec le label de liaison %s utilise le même identificateur global que l'entité à %L" +msgstr "Le bloc COMMON à %L avec le label de liaison %qs utilise le même identificateur global que l'entité à %L" #: fortran/resolve.c:1080 #, gcc-internal-format @@ -58936,7 +58092,7 @@ msgstr "Le bloc COMMON %qs à %L qui est aussi une procédure globale" #: fortran/resolve.c:1164 #, gcc-internal-format msgid "The KIND parameter %qs in the PDT constructor at %C has no value" -msgstr "" +msgstr "Le paramètre KIND %qs dans le constructeur PDT à %C n'a pas de valeur" #: fortran/resolve.c:1300 #, gcc-internal-format, gfc-internal-format @@ -59117,10 +58273,9 @@ msgid "Unable to resolve the specific function %qs at %L" msgstr "Impossible de résoudre la fonction spécifique %qs à %L" #: fortran/resolve.c:2898 -#, fuzzy, gcc-internal-format -#| msgid "Function %qs at %L has no IMPLICIT type" +#, gcc-internal-format msgid "Function %qs at %L has no IMPLICIT type; did you mean %qs?" -msgstr "La fonction %qs à %L n'a pas de type IMPLICIT" +msgstr "La fonction %qs à %L n'a pas de type IMPLICIT, vouliez-vous employer %qs ?" #: fortran/resolve.c:2902 fortran/resolve.c:16216 #, gcc-internal-format @@ -59797,16 +58952,14 @@ msgid "Logical SELECT CASE block at %L has more that two cases" msgstr "Le bloc SELECT CASE logique à %L a plus de deux cas" #: fortran/resolve.c:8505 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "Selector at %L must not be coindexed" +#, gcc-internal-format, gfc-internal-format msgid "Selector at %L cannot be NULL()" -msgstr "Le sélecteur à %L ne doit pas être co-indexé" +msgstr "Le sélecteur à %L ne peut pas NULL()" #: fortran/resolve.c:8510 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "Selector at %L must not be coindexed" +#, gcc-internal-format, gfc-internal-format msgid "Selector at %L has no type" -msgstr "Le sélecteur à %L ne doit pas être co-indexé" +msgstr "Le sélecteur à %L n'a pas de type" #: fortran/resolve.c:8532 #, gcc-internal-format @@ -60034,10 +59187,9 @@ msgid "gfc_resolve_blocks(): Bad block type" msgstr "gfc_resolve_blocks(): Mauvais type de bloc" #: fortran/resolve.c:10217 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "CHARACTER expression will be truncated in assignment (%d/%d) at %L" +#, gcc-internal-format, gfc-internal-format msgid "CHARACTER expression will be truncated in assignment (%ld/%ld) at %L" -msgstr "L'expression CHARACTER sera tronquée dans l'affectation (%d/%d) à %L" +msgstr "L'expression CHARACTER sera tronquée dans l'affectation (%ld/%ld) à %L" #: fortran/resolve.c:10249 #, gcc-internal-format, gfc-internal-format @@ -60147,27 +59299,24 @@ msgid "gfc_resolve_code(): Bad statement code" msgstr "gfc_resolve_code(): Mauvais code d'instruction" #: fortran/resolve.c:11583 -#, fuzzy, gcc-internal-format -#| msgid "Variable %s with binding label %s at %L uses the same global identifier as entity at %L" +#, gcc-internal-format msgid "Variable %qs with binding label %qs at %L uses the same global identifier as entity at %L" -msgstr "La variable %s avec l'étiquette de liaison %s à %L utilise le même identificateur global que l'entité à %L" +msgstr "La variable %qs avec l'étiquette de liaison %qs à %L utilise le même identificateur global que l'entité à %L" #. This can only happen if the variable is defined in a module - if it #. isn't the same module, reject it. #: fortran/resolve.c:11596 -#, fuzzy, gcc-internal-format -#| msgid "Variable %s from module %s with binding label %s at %L uses the same global identifier as entity at %L from module %s" +#, gcc-internal-format msgid "Variable %qs from module %qs with binding label %qs at %L uses the same global identifier as entity at %L from module %qs" -msgstr "La variable %s du module %s avec l'étiquette de liaison %s à %L utilise le même identificateur global que l'entité à %L du module %s" +msgstr "La variable %qs du module %qs avec l'étiquette de liaison %qs à %L utilise le même identificateur global que l'entité à %L du module %qs" #. Print an error if the procedure is defined multiple times; we have to #. exclude references to the same procedure via module association or #. multiple checks for the same procedure. #: fortran/resolve.c:11613 -#, fuzzy, gcc-internal-format -#| msgid "Procedure %s with binding label %s at %L uses the same global identifier as entity at %L" +#, gcc-internal-format msgid "Procedure %qs with binding label %qs at %L uses the same global identifier as entity at %L" -msgstr "La procédure %s avec l'étiquette de liaison %s à %L utilise le même identificateur global que l'entité à %L" +msgstr "La procédure %qs avec l'étiquette de liaison %qs à %L utilise le même identificateur global que l'entité à %L" #: fortran/resolve.c:11698 #, gcc-internal-format, gfc-internal-format @@ -60629,7 +59778,7 @@ msgstr "Le type dérivé non extensible %qs à %L ne peut pas être ABSTRACT" #: fortran/resolve.c:14053 #, gcc-internal-format msgid "Parameterized type %qs does not have a component corresponding to parameter %qs at %L" -msgstr "" +msgstr "Le type paramétrisé %qs n'a pas de composant correspondant au paramètre %qs à %L" #: fortran/resolve.c:14086 #, gcc-internal-format @@ -60697,20 +59846,19 @@ msgid "CLASS variable %qs at %L cannot have the PARAMETER attribute" msgstr "La variable CLASS %qs à %L ne peut pas avoir l'attribut PARAMETER" #: fortran/resolve.c:14365 -#, fuzzy, gcc-internal-format -#| msgid "Entity %qs at %L has a deferred type parameter and requires either the POINTER or ALLOCATABLE attribute" +#, gcc-internal-format msgid "The object %qs at %L has a deferred LEN parameter %qs and is neither allocatable nor a pointer" -msgstr "L'entité %qs à %L a un paramètre de type différé et requiert soit l'attribut POINTER ou ALLOCATABLE" +msgstr "L'objet %qs à %L a un paramètre LEN différé %qs et n'est ni allouable ni un pointeur" #: fortran/resolve.c:14376 #, gcc-internal-format msgid "The AUTOMATIC object %qs at %L must not have the SAVE attribute or be a variable declared in the main program, a module or a submodule(F08/C513)" -msgstr "" +msgstr "L'objet AUTOMATIC %qs à %L ne doit pas avoir l'attribut SAVE ou être une variable déclarée dans le programme principal, un module ou un sous-module(F08/C513)" #: fortran/resolve.c:14383 #, gcc-internal-format msgid "The object %qs at %L with ASSUMED type parameters must be a dummy or a SELECT TYPE selector(F08/4.2)" -msgstr "" +msgstr "L'objet %qs à %L avec des paramètres de type ASSUMED doit être fictif ou un sélecteur SELECT TYPE(F08/4.2)" #: fortran/resolve.c:14422 #, gcc-internal-format, gfc-internal-format @@ -60733,10 +59881,9 @@ msgid "%qs at %L has the CONTIGUOUS attribute but is not an array pointer or an msgstr "%qs à %L a l'attribut CONTIGUOUS mais il n'est pas un pointeur de tableau ou un tableau de forme tacite ou de rang tacite" #: fortran/resolve.c:14606 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "Bad specification for assumed size array at %C" +#, gcc-internal-format, gfc-internal-format msgid "Bad specification for assumed size array at %L" -msgstr "Mauvaise spécification pour le tableau de taille tacite à %C" +msgstr "Mauvaise spécification pour le tableau de taille tacite à %L" #: fortran/resolve.c:14619 #, gcc-internal-format, gfc-internal-format @@ -60846,10 +59993,9 @@ msgid "Variable %s at %L of type LOCK_TYPE or with subcomponent of type LOCK_TYP msgstr "La variable %s à %L du type LOCK_TYPE ou avec un sous-composant de type LOCK_TYPE doit être un co-tableau" #: fortran/resolve.c:14910 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "Variable %s at %L of type EVENT_TYPE or with subcomponent of type LOCK_TYPE must be a coarray" +#, gcc-internal-format, gfc-internal-format msgid "Variable %s at %L of type EVENT_TYPE or with subcomponent of type EVENT_TYPE must be a coarray" -msgstr "La variable %s à %L du type EVENT_TYPE ou avec un sous-composant du type LOCK_TYPE doit être un co-tableau" +msgstr "La variable %s à %L du type EVENT_TYPE ou avec un sous-composant du type EVENT_TYPE doit être un co-tableau" #: fortran/resolve.c:14928 #, gcc-internal-format @@ -61027,10 +60173,9 @@ msgid "Either all or none of the objects in the EQUIVALENCE set at %L shall have msgstr "Soit aucun ou tous les objets dans l'ensemble EQUIVALENCE à %L aura l'attribut PROTECTED" #: fortran/resolve.c:16031 -#, fuzzy, gcc-internal-format -#| msgid "Common block member %qs at %L cannot be an EQUIVALENCE object in the pure procedure %qs" +#, gcc-internal-format msgid "COMMON block member %qs at %L cannot be an EQUIVALENCE object in the pure procedure %qs" -msgstr "Le membre %qs du bloc commun à %L ne peut pas être un objet EQUIVALENCE dans la procédure pure %qs" +msgstr "Le membre %qs du bloc COMMON à %L ne peut pas être un objet EQUIVALENCE dans la procédure pure %qs" #: fortran/resolve.c:16040 #, gcc-internal-format @@ -61153,10 +60298,9 @@ msgid "Nonconforming tab character at %C" msgstr "Caractère de tabulation non conforme à %C" #: fortran/scanner.c:1710 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "Invalid character in name at %C" +#, gcc-internal-format, gfc-internal-format msgid "Invalid character 0x%s at %C" -msgstr "Caractère invalide dans le nom à %C" +msgstr "Caractère 0x%s invalide à %C" #: fortran/scanner.c:1795 fortran/scanner.c:1798 #, gcc-internal-format @@ -61570,10 +60714,9 @@ msgid "gfc_set_default_type(): symbol already has a type" msgstr "gfc_set_default_type(): le symbole a déjà un type" #: fortran/symbol.c:306 -#, fuzzy, gcc-internal-format -#| msgid "Symbol %qs at %L has no IMPLICIT type" +#, gcc-internal-format msgid "Symbol %qs at %L has no IMPLICIT type; did you mean %qs?" -msgstr "Le symbole %qs à %L n'a pas de type IMPLICIT" +msgstr "Le symbole %qs à %L n'a pas de type IMPLICIT, vouliez-vous employer %qs ?" #: fortran/symbol.c:310 #, gcc-internal-format @@ -61808,10 +60951,9 @@ msgid "Component %qs at %C is a PRIVATE component of %qs" msgstr "Le composant %qs à %C est un composant PRIVATE de %qs" #: fortran/symbol.c:2527 -#, fuzzy, gcc-internal-format -#| msgid "%qs at %C is not a member of the %qs structure" +#, gcc-internal-format msgid "%qs at %C is not a member of the %qs structure; did you mean %qs?" -msgstr "%qs à %C n'est pas un membre de la structure %qs" +msgstr "%qs à %C n'est pas un membre de la structure %qs; vouliez-vous employer %qs ?" #: fortran/symbol.c:2531 #, gcc-internal-format @@ -62239,16 +61381,14 @@ msgid "REAL(KIND=8) is not available for %<-fdefault-real-8%> option" msgstr "REAL(KIND=8) n'est pas disponible avec l'option %<-fdefault-real-8%>" #: fortran/trans-types.c:591 -#, fuzzy, gcc-internal-format -#| msgid "REAL(KIND=8) is not available for %<-fdefault-real-8%> option" +#, gcc-internal-format msgid "REAL(KIND=10) is not available for %<-fdefault-real-10%> option" -msgstr "REAL(KIND=8) n'est pas disponible avec l'option %<-fdefault-real-8%>" +msgstr "REAL(KIND=10) n'est pas disponible avec l'option %<-fdefault-real-10%>" #: fortran/trans-types.c:599 -#, fuzzy, gcc-internal-format -#| msgid "REAL(KIND=8) is not available for %<-fdefault-real-8%> option" +#, gcc-internal-format msgid "REAL(KIND=16) is not available for %<-fdefault-real-16%> option" -msgstr "REAL(KIND=8) n'est pas disponible avec l'option %<-fdefault-real-8%>" +msgstr "REAL(KIND=16) n'est pas disponible avec l'option %<-fdefault-real-16%>" #: fortran/trans-types.c:607 #, gcc-internal-format @@ -62311,10 +61451,9 @@ msgid "unable to open file" msgstr "impossible d'ouvrir le fichier" #: lto/lto-lang.c:305 -#, fuzzy, gcc-internal-format -#| msgid "%s: %s: %s" +#, gcc-internal-format msgid "%s:%s: %E: %E" -msgstr "%s: %s: %s" +msgstr "%s:%s: %E: %E" #: lto/lto-lang.c:864 #, gcc-internal-format @@ -63451,10 +62590,9 @@ msgstr "%<-fobjc-sjlj-exceptions%> est ignoré pour %<-fgnu-runtime%>" #: objc/objc-gnu-runtime-abi-01.c:2171 objc/objc-next-runtime-abi-01.c:2817 #: objc/objc-next-runtime-abi-02.c:3589 -#, fuzzy, gcc-internal-format -#| msgid "non-objective-c type '%T' cannot be caught" +#, gcc-internal-format msgid "non-objective-c type %qT cannot be caught" -msgstr "le type non-objective-c « %T » ne peut être intercepté" +msgstr "le type non-objective-c %qT ne peut être intercepté" #: objc/objc-next-runtime-abi-01.c:152 #, gcc-internal-format -- cgit v1.2.1 From b868e155826f70517ea67ce3e520ca0904d0b87c Mon Sep 17 00:00:00 2001 From: jakub Date: Tue, 13 Feb 2018 21:40:35 +0000 Subject: PR c++/84364 * typeck.c (check_return_expr): Don't emit -Weffc++ warning about return other than *this in assignment operators if retval is type dependent expression. * g++.dg/warn/effc4.C: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@257640 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/cp/ChangeLog | 7 +++++++ gcc/cp/typeck.c | 3 ++- gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/g++.dg/warn/effc4.C | 10 ++++++++++ 4 files changed, 24 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/g++.dg/warn/effc4.C diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 84fb9094d90..ed44d9e2842 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,10 @@ +2018-02-13 Jakub Jelinek + + PR c++/84364 + * typeck.c (check_return_expr): Don't emit -Weffc++ warning + about return other than *this in assignment operators if + retval is type dependent expression. + 2018-02-13 Paolo Carlini PR c++/84333 diff --git a/gcc/cp/typeck.c b/gcc/cp/typeck.c index dfcf71689c6..0e7c63dd197 100644 --- a/gcc/cp/typeck.c +++ b/gcc/cp/typeck.c @@ -9232,7 +9232,8 @@ check_return_expr (tree retval, bool *no_warning) /* Effective C++ rule 15. See also start_function. */ if (warn_ecpp - && DECL_NAME (current_function_decl) == assign_op_identifier) + && DECL_NAME (current_function_decl) == assign_op_identifier + && !type_dependent_expression_p (retval)) { bool warn = true; diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index f22c21afb76..04d5fd479c7 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2018-02-13 Jakub Jelinek + + PR c++/84364 + * g++.dg/warn/effc4.C: New test. + 2018-02-13 Paolo Carlini PR c++/84333 diff --git a/gcc/testsuite/g++.dg/warn/effc4.C b/gcc/testsuite/g++.dg/warn/effc4.C new file mode 100644 index 00000000000..2ce79280104 --- /dev/null +++ b/gcc/testsuite/g++.dg/warn/effc4.C @@ -0,0 +1,10 @@ +// PR c++/84364 +// { dg-do compile } +// { dg-options "-Weffc++" } + +template +struct A { + A &operator=(A& f) { + return *this; // { dg-bogus "should return a reference to" } + } +}; -- cgit v1.2.1 From 814f7bc3113116b29ca8a394d58a35008fa95721 Mon Sep 17 00:00:00 2001 From: bergner Date: Tue, 13 Feb 2018 21:52:12 +0000 Subject: PR target/84365 * gcc.target/powerpc/altivec-7-le.c: Also match lxv when compiling with -mcpu=power9. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@257641 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/testsuite/ChangeLog | 6 ++++++ gcc/testsuite/gcc.target/powerpc/altivec-7-le.c | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 04d5fd479c7..68dfe951723 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2018-02-13 Peter Bergner + + PR target/84365 + * gcc.target/powerpc/altivec-7-le.c: Also match lxv when compiling + with -mcpu=power9. + 2018-02-13 Jakub Jelinek PR c++/84364 diff --git a/gcc/testsuite/gcc.target/powerpc/altivec-7-le.c b/gcc/testsuite/gcc.target/powerpc/altivec-7-le.c index a1549118870..6f895336407 100644 --- a/gcc/testsuite/gcc.target/powerpc/altivec-7-le.c +++ b/gcc/testsuite/gcc.target/powerpc/altivec-7-le.c @@ -22,7 +22,7 @@ /* { dg-final { scan-assembler-times "vpkpx" 2 } } */ /* { dg-final { scan-assembler-times "vmulesb" 1 } } */ /* { dg-final { scan-assembler-times "vmulosb" 1 } } */ -/* { dg-final { scan-assembler-times "lxvd2x" 36 } } */ +/* { dg-final { scan-assembler-times {\mlxvd2x\M|\mlxv\M} 36 } } */ /* { dg-final { scan-assembler-times "lvewx" 2 } } */ /* { dg-final { scan-assembler-times "lvxl" 1 } } */ /* { dg-final { scan-assembler-times "vupklsh" 1 } } */ -- cgit v1.2.1 From a7c2998247bf8eba10c38363d36028389004e650 Mon Sep 17 00:00:00 2001 From: bergner Date: Tue, 13 Feb 2018 22:04:00 +0000 Subject: PR target/84370 * gcc.target/powerpc/builtins-3-p9-runnable.c: Remove deprecated option. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@257642 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/gcc.target/powerpc/builtins-3-p9-runnable.c | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 68dfe951723..e14dd7d7a17 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2018-02-13 Peter Bergner + + PR target/84370 + * gcc.target/powerpc/builtins-3-p9-runnable.c: Remove deprecated option. + 2018-02-13 Peter Bergner PR target/84365 diff --git a/gcc/testsuite/gcc.target/powerpc/builtins-3-p9-runnable.c b/gcc/testsuite/gcc.target/powerpc/builtins-3-p9-runnable.c index 24589b55639..3b67e5370a0 100644 --- a/gcc/testsuite/gcc.target/powerpc/builtins-3-p9-runnable.c +++ b/gcc/testsuite/gcc.target/powerpc/builtins-3-p9-runnable.c @@ -1,6 +1,6 @@ /* { dg-do run { target { powerpc64*-*-* && { lp64 && p9vector_hw } } } } */ /* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power9" } } */ -/* { dg-options "-mcpu=power9 -O2 -mupper-regs-di" } */ +/* { dg-options "-mcpu=power9 -O2" } */ #include // vector -- cgit v1.2.1 From 96eca8f423347be271fd084c48beb985837e0a02 Mon Sep 17 00:00:00 2001 From: segher Date: Tue, 13 Feb 2018 22:12:55 +0000 Subject: combine: Update links correctly for new I2 (PR84169) If there is a LOG_LINK between two insns, this means those two insns can be combined, as far as dataflow is concerned. There never should be a LOG_LINK between two unrelated insns. If there is one, combine will try to combine the insns without doing all the needed checks if the earlier destination is used before the later insn, etc. Unfortunately we do not update the LOG_LINKs correctly in some cases. This patch fixes at least some of those cases. PR rtl-optimization/84169 * combine.c (try_combine): New variable split_i2i3. Set it to true if we generated a parallel as new i3 and we split that to new i2 and i3 instructions. Handle split_i2i3 similar to swap_i2i3: scan the LOG_LINKs of i3 to see which of those need to link to i2 now. Link those to i2, not i1. Partially rewrite this scan code. gcc/testsuite/ PR rtl-optimization/84169 * gcc.c-torture/execute/pr84169.c: New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@257644 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 9 +++++ gcc/combine.c | 57 +++++++++++++++------------ gcc/testsuite/ChangeLog | 5 +++ gcc/testsuite/gcc.c-torture/execute/pr84169.c | 25 ++++++++++++ 4 files changed, 70 insertions(+), 26 deletions(-) create mode 100644 gcc/testsuite/gcc.c-torture/execute/pr84169.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index c58d419556b..ac283a63a9e 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,12 @@ +2018-02-13 Segher Boessenkool + + PR rtl-optimization/84169 + * combine.c (try_combine): New variable split_i2i3. Set it to true if + we generated a parallel as new i3 and we split that to new i2 and i3 + instructions. Handle split_i2i3 similar to swap_i2i3: scan the + LOG_LINKs of i3 to see which of those need to link to i2 now. Link + those to i2, not i1. Partially rewrite this scan code. + 2018-02-13 Jakub Jelinek PR c/82210 diff --git a/gcc/combine.c b/gcc/combine.c index a9929f2a3e2..c4d55eb85a4 100644 --- a/gcc/combine.c +++ b/gcc/combine.c @@ -2665,6 +2665,7 @@ try_combine (rtx_insn *i3, rtx_insn *i2, rtx_insn *i1, rtx_insn *i0, /* Notes that I1, I2 or I3 is a MULT operation. */ int have_mult = 0; int swap_i2i3 = 0; + int split_i2i3 = 0; int changed_i3_dest = 0; int maxreg; @@ -4091,6 +4092,9 @@ try_combine (rtx_insn *i3, rtx_insn *i2, rtx_insn *i1, rtx_insn *i0, } insn_code_number = recog_for_combine (&newpat, i3, &new_i3_notes); + + if (insn_code_number >= 0) + split_i2i3 = 1; } } @@ -4258,44 +4262,45 @@ try_combine (rtx_insn *i3, rtx_insn *i2, rtx_insn *i1, rtx_insn *i0, if (swap_i2i3) { - rtx_insn *insn; - struct insn_link *link; - rtx ni2dest; - /* I3 now uses what used to be its destination and which is now I2's destination. This requires us to do a few adjustments. */ PATTERN (i3) = newpat; adjust_for_new_dest (i3); + } - /* We need a LOG_LINK from I3 to I2. But we used to have one, - so we still will. + if (swap_i2i3 || split_i2i3) + { + /* We might need a LOG_LINK from I3 to I2. But then we used to + have one, so we still will. However, some later insn might be using I2's dest and have - a LOG_LINK pointing at I3. We must remove this link. - The simplest way to remove the link is to point it at I1, - which we know will be a NOTE. */ + a LOG_LINK pointing at I3. We should change it to point at + I2 instead. */ /* newi2pat is usually a SET here; however, recog_for_combine might have added some clobbers. */ - if (GET_CODE (newi2pat) == PARALLEL) - ni2dest = SET_DEST (XVECEXP (newi2pat, 0, 0)); - else - ni2dest = SET_DEST (newi2pat); - - for (insn = NEXT_INSN (i3); - insn && (this_basic_block->next_bb == EXIT_BLOCK_PTR_FOR_FN (cfun) - || insn != BB_HEAD (this_basic_block->next_bb)); + rtx x = newi2pat; + if (GET_CODE (x) == PARALLEL) + x = XVECEXP (newi2pat, 0, 0); + + unsigned int regno = REGNO (SET_DEST (x)); + + bool done = false; + for (rtx_insn *insn = NEXT_INSN (i3); + !done + && insn + && NONDEBUG_INSN_P (insn) + && BLOCK_FOR_INSN (insn) == this_basic_block; insn = NEXT_INSN (insn)) { - if (NONDEBUG_INSN_P (insn) - && reg_referenced_p (ni2dest, PATTERN (insn))) - { - FOR_EACH_LOG_LINK (link, insn) - if (link->insn == i3) - link->insn = i1; - - break; - } + struct insn_link *link; + FOR_EACH_LOG_LINK (link, insn) + if (link->insn == i3 && link->regno == regno) + { + link->insn = i2; + done = true; + break; + } } } diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index e14dd7d7a17..034931bad9b 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2018-02-13 Segher Boessenkool + + PR rtl-optimization/84169 + * gcc.c-torture/execute/pr84169.c: New. + 2018-02-13 Peter Bergner PR target/84370 diff --git a/gcc/testsuite/gcc.c-torture/execute/pr84169.c b/gcc/testsuite/gcc.c-torture/execute/pr84169.c new file mode 100644 index 00000000000..ba8f8fc4c05 --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/execute/pr84169.c @@ -0,0 +1,25 @@ +/* PR rtl-optimization/84169 */ + +#ifdef __SIZEOF_INT128__ +typedef unsigned __int128 T; +#else +typedef unsigned long long T; +#endif + +T b; + +static __attribute__ ((noipa)) T +foo (T c, T d, T e, T f, T g, T h) +{ + __builtin_mul_overflow ((unsigned char) h, -16, &h); + return b + h; +} + +int +main () +{ + T x = foo (0, 0, 0, 0, 0, 4); + if (x != -64) + __builtin_abort (); + return 0; +} -- cgit v1.2.1 From 0a3de3b4d15b14a853e05930b6bacbdc835721fb Mon Sep 17 00:00:00 2001 From: law Date: Tue, 13 Feb 2018 22:38:42 +0000 Subject: Add PR marker for one of Alex's changes git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@257645 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 1 + 1 file changed, 1 insertion(+) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index ac283a63a9e..0789b4aa6c2 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -28,6 +28,7 @@ 2018-02-13 Alexandre Oliva + PR debug/84342 * common.opt (gas-loc-support, gas-locview-support): New. (ginline-points, ginternal-reset-location-views): New. * doc/invoke.texi: Document them. Use @itemx where intended. -- cgit v1.2.1 From 67d5178f29cabc0152e9e69688836cc151798e3a Mon Sep 17 00:00:00 2001 From: law Date: Tue, 13 Feb 2018 22:43:36 +0000 Subject: Add another PR marker to Alex's change. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@257646 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 1 + 1 file changed, 1 insertion(+) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 0789b4aa6c2..41ded5f7ef1 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -29,6 +29,7 @@ 2018-02-13 Alexandre Oliva PR debug/84342 + PR debug/84319 * common.opt (gas-loc-support, gas-locview-support): New. (ginline-points, ginternal-reset-location-views): New. * doc/invoke.texi: Document them. Use @itemx where intended. -- cgit v1.2.1 From d8fbc1d3837d4b18b3040607924ffb95c477edbc Mon Sep 17 00:00:00 2001 From: bergner Date: Tue, 13 Feb 2018 23:05:59 +0000 Subject: gcc/ PR target/84279 * config/rs6000/rs6000.c (mem_operand_gpr): Disallow altivec addresses. gcc/testsuite/ PR target/84279 * g++.dg/pr84279.C: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@257647 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 5 +++++ gcc/config/rs6000/rs6000.c | 6 ++++++ gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/g++.dg/pr84279.C | 35 +++++++++++++++++++++++++++++++++++ 4 files changed, 51 insertions(+) create mode 100644 gcc/testsuite/g++.dg/pr84279.C diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 41ded5f7ef1..3ddfff6564b 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2018-02-13 Peter Bergner + + PR target/84279 + * config/rs6000/rs6000.c (mem_operand_gpr): Disallow altivec addresses. + 2018-02-13 Segher Boessenkool PR rtl-optimization/84169 diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c index 6a6801aad9b..ddfc10666a3 100644 --- a/gcc/config/rs6000/rs6000.c +++ b/gcc/config/rs6000/rs6000.c @@ -8220,6 +8220,12 @@ mem_operand_gpr (rtx op, machine_mode mode) int extra; rtx addr = XEXP (op, 0); + /* Don't allow altivec type addresses like (mem (and (plus ...))). + See PR target/84279. */ + + if (GET_CODE (addr) == AND) + return false; + op = address_offset (addr); if (op == NULL_RTX) return true; diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 034931bad9b..eec738ef3fd 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2018-02-13 Peter Bergner + + PR target/84279 + * g++.dg/pr84279.C: New test. + 2018-02-13 Segher Boessenkool PR rtl-optimization/84169 diff --git a/gcc/testsuite/g++.dg/pr84279.C b/gcc/testsuite/g++.dg/pr84279.C new file mode 100644 index 00000000000..a88d3fb8470 --- /dev/null +++ b/gcc/testsuite/g++.dg/pr84279.C @@ -0,0 +1,35 @@ +/* { dg-do compile { target { powerpc*-*-* } } } */ +/* { dg-skip-if "" { powerpc*-*-darwin* } } */ +/* { dg-require-effective-target powerpc_p8vector_ok } */ +/* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power8" } } */ +/* { dg-options "-O3 -mcpu=power8 -g -fPIC -fvisibility=hidden -fstack-protector-strong" } */ + +template struct E { T e; }; +struct J { + unsigned k, l; + J (unsigned x, unsigned y) : k(x), l(y) {} +}; +typedef struct A { + J n, p; + A (); + A (J x, J y) : n(x), p(y) {} +} *S; +S t; +struct B { + struct C { + S q, r; + int u, v; + bool m1 (S, A &); + J m2 () const; + J m3 () const; + A m4 () const; + }; + typedef E D; + void m5 (D *); + void m6 (unsigned, A); +}; +bool B::C::m1 (S, A &x) { bool o; x = m4 (); return o; } +J B::C::m2 () const { unsigned g (u == 0); unsigned h (v); return J (g, h); } +J B::C::m3 () const { unsigned g (q != t); unsigned h (r != t); return J (g, h); } +A B::C::m4 () const { return A (m2 (), m3 ()); } +void B::m5 (D *c) { unsigned x; C ar; A am; if (ar.m1 (c->e, am)) m6 (x, am); } -- cgit v1.2.1 From 703702d32fb0d2b6ecf28f468e02200c9fbc428f Mon Sep 17 00:00:00 2001 From: bergner Date: Tue, 13 Feb 2018 23:29:38 +0000 Subject: PR target/84372 * gcc.target/powerpc/lvsl-lvsr.c: Also match lxv when compiling with -mcpu=power9. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@257648 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/testsuite/ChangeLog | 6 ++++++ gcc/testsuite/gcc.target/powerpc/lvsl-lvsr.c | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index eec738ef3fd..0a2203185ef 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2018-02-13 Peter Bergner + + PR target/84372 + * gcc.target/powerpc/lvsl-lvsr.c: Also match lxv when compiling + with -mcpu=power9. + 2018-02-13 Peter Bergner PR target/84279 diff --git a/gcc/testsuite/gcc.target/powerpc/lvsl-lvsr.c b/gcc/testsuite/gcc.target/powerpc/lvsl-lvsr.c index 71dd0a24ae1..6a7baf31b43 100644 --- a/gcc/testsuite/gcc.target/powerpc/lvsl-lvsr.c +++ b/gcc/testsuite/gcc.target/powerpc/lvsl-lvsr.c @@ -6,7 +6,7 @@ /* { dg-options "-O0 -Wno-deprecated" } */ /* { dg-final { scan-assembler-times "lvsl" 2 } } */ /* { dg-final { scan-assembler-times "lvsr" 2 } } */ -/* { dg-final { scan-assembler-times "lxvd2x" 2 } } */ +/* { dg-final { scan-assembler-times {\mlxvd2x\M|\mlxv\M} 2 } } */ /* { dg-final { scan-assembler-times "vperm" 2 } } */ -- cgit v1.2.1 From 329f026e2b533b500acb07bb56ffb7cba4dc2b57 Mon Sep 17 00:00:00 2001 From: gccadmin Date: Wed, 14 Feb 2018 00:16:14 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@257651 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index ab63496b08a..1f17468cbe8 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20180213 +20180214 -- cgit v1.2.1 From dff73565df46267296c9bee0589e1f106a07a5e2 Mon Sep 17 00:00:00 2001 From: law Date: Wed, 14 Feb 2018 07:21:11 +0000 Subject: 2018-02-14 Jozef Lawrynowicz PR target/79242 * machmode.def: Define a complex mode for PARTIAL_INT. * genmodes.c (complex_class): Return MODE_COMPLEX_INT for MODE_PARTIAL_INT. * doc/rtl.texi: Document CSPImode. * config/msp430/msp430.c (msp430_hard_regno_nregs): Add CPSImode handling. (msp430_hard_regno_nregs_with_padding): Likewise. PR target/79242 * gcc.target/msp430/pr79242.c: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@257653 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 11 +++++++++++ gcc/config/msp430/msp430.c | 4 ++++ gcc/doc/rtl.texi | 5 +++-- gcc/genmodes.c | 1 + gcc/machmode.def | 1 + gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/gcc.target/msp430/pr79242.c | 11 +++++++++++ 7 files changed, 36 insertions(+), 2 deletions(-) create mode 100644 gcc/testsuite/gcc.target/msp430/pr79242.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 3ddfff6564b..bcaf137e461 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,14 @@ +2018-02-14 Jozef Lawrynowicz + + PR target/79242 + * machmode.def: Define a complex mode for PARTIAL_INT. + * genmodes.c (complex_class): Return MODE_COMPLEX_INT for + MODE_PARTIAL_INT. + * doc/rtl.texi: Document CSPImode. + * config/msp430/msp430.c (msp430_hard_regno_nregs): Add CPSImode + handling. + (msp430_hard_regno_nregs_with_padding): Likewise. + 2018-02-13 Peter Bergner PR target/84279 diff --git a/gcc/config/msp430/msp430.c b/gcc/config/msp430/msp430.c index 83e9e38af4c..a8fed123f7a 100644 --- a/gcc/config/msp430/msp430.c +++ b/gcc/config/msp430/msp430.c @@ -914,6 +914,8 @@ msp430_hard_regno_nregs (unsigned int, machine_mode mode) { if (mode == PSImode && msp430x) return 1; + if (mode == CPSImode && msp430x) + return 2; return ((GET_MODE_SIZE (mode) + UNITS_PER_WORD - 1) / UNITS_PER_WORD); } @@ -936,6 +938,8 @@ msp430_hard_regno_nregs_with_padding (int regno ATTRIBUTE_UNUSED, { if (mode == PSImode) return 2; + if (mode == CPSImode) + return 4; return msp430_hard_regno_nregs (regno, mode); } diff --git a/gcc/doc/rtl.texi b/gcc/doc/rtl.texi index 43d5405ddb4..b5410f9689d 100644 --- a/gcc/doc/rtl.texi +++ b/gcc/doc/rtl.texi @@ -1303,10 +1303,11 @@ point values. The floating point values are in @code{QFmode}, @findex CDImode @findex CTImode @findex COImode -@item CQImode, CHImode, CSImode, CDImode, CTImode, COImode +@findex CPSImode +@item CQImode, CHImode, CSImode, CDImode, CTImode, COImode, CPSImode These modes stand for a complex number represented as a pair of integer values. The integer values are in @code{QImode}, @code{HImode}, -@code{SImode}, @code{DImode}, @code{TImode}, and @code{OImode}, +@code{SImode}, @code{DImode}, @code{TImode}, @code{OImode}, and @code{PSImode}, respectively. @findex BND32mode diff --git a/gcc/genmodes.c b/gcc/genmodes.c index a70f0967859..af0d280e208 100644 --- a/gcc/genmodes.c +++ b/gcc/genmodes.c @@ -119,6 +119,7 @@ complex_class (enum mode_class c) switch (c) { case MODE_INT: return MODE_COMPLEX_INT; + case MODE_PARTIAL_INT: return MODE_COMPLEX_INT; case MODE_FLOAT: return MODE_COMPLEX_FLOAT; default: error ("no complex class for class %s", mode_class_names[c]); diff --git a/gcc/machmode.def b/gcc/machmode.def index d5d5efc22ab..9505cc3e6df 100644 --- a/gcc/machmode.def +++ b/gcc/machmode.def @@ -260,6 +260,7 @@ UACCUM_MODE (UTA, 16, 64, 64); /* 64.64 */ /* Complex modes. */ COMPLEX_MODES (INT); +COMPLEX_MODES (PARTIAL_INT); COMPLEX_MODES (FLOAT); /* Decimal floating point modes. */ diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 0a2203185ef..a8dc606ad35 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2018-02-14 Jozef Lawrynowicz + + PR target/79242 + * gcc.target/msp430/pr79242.c: New test. + 2018-02-13 Peter Bergner PR target/84372 diff --git a/gcc/testsuite/gcc.target/msp430/pr79242.c b/gcc/testsuite/gcc.target/msp430/pr79242.c new file mode 100644 index 00000000000..d7ff8d38a3f --- /dev/null +++ b/gcc/testsuite/gcc.target/msp430/pr79242.c @@ -0,0 +1,11 @@ +/* { dg-do compile } */ +/* { dg-skip-if "" { "*-*-*" } { "-mcpu=msp430" "-msmall" } { "" } } */ +/* { dg-options "-mcpu=msp430x" } */ + +typedef _Complex __int20 C; + +C +foo (C x, C y) +{ + return x + y; +} -- cgit v1.2.1 From 3c7c9afcbf5105e3eec93f79e2efb92068fda2ef Mon Sep 17 00:00:00 2001 From: jakub Date: Wed, 14 Feb 2018 12:12:15 +0000 Subject: PR fortran/84313 * testsuite/libgomp.fortran/threadprivate4.f90: Add -std=f2003 -fall-intrinsics into dg-additional-options. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@257654 138bc75d-0d04-0410-961f-82ee72b054a4 --- libgomp/ChangeLog | 6 ++++++ libgomp/testsuite/libgomp.fortran/threadprivate4.f90 | 1 + 2 files changed, 7 insertions(+) diff --git a/libgomp/ChangeLog b/libgomp/ChangeLog index a620923729b..c33919d64d1 100644 --- a/libgomp/ChangeLog +++ b/libgomp/ChangeLog @@ -1,3 +1,9 @@ +2018-02-14 Jakub Jelinek + + PR fortran/84313 + * testsuite/libgomp.fortran/threadprivate4.f90: Add + -std=f2003 -fall-intrinsics into dg-additional-options. + 2018-02-08 Martin Jambor * testsuite/libgomp.hsa.c/pr82416.c: Make the function with target diff --git a/libgomp/testsuite/libgomp.fortran/threadprivate4.f90 b/libgomp/testsuite/libgomp.fortran/threadprivate4.f90 index b5fb10bfee7..c86cac72305 100644 --- a/libgomp/testsuite/libgomp.fortran/threadprivate4.f90 +++ b/libgomp/testsuite/libgomp.fortran/threadprivate4.f90 @@ -1,4 +1,5 @@ ! { dg-do run } +! { dg-additional-options "-std=f2003 -fall-intrinsics" } ! { dg-require-effective-target tls_runtime } module threadprivate4 -- cgit v1.2.1 From 504e193c574466ac7aa92a29009011fe1669befa Mon Sep 17 00:00:00 2001 From: olegendo Date: Wed, 14 Feb 2018 12:33:37 +0000 Subject: gcc/ PR target/83831 * config/rx/rx-protos.h (rx_reg_dead_or_unused_after_insn, rx_copy_reg_dead_or_unused_notes, rx_fuse_in_memory_bitop): New declarations. (set_of_reg): New struct. (rx_find_set_of_reg, rx_find_use_of_reg): New functions. * config/rx/rx.c (rx_reg_dead_or_unused_after_insn, rx_copy_reg_dead_or_unused_notes, rx_fuse_in_memory_bitop): New functions. * config/rx/rx.md (andsi3, iorsi3, xorsi3): Convert to insn_and_split. Split into bitclr, bitset, bitinvert patterns if appropriate. (*bitset, *bitinvert, *bitclr): Convert to named insn_and_split and use rx_fuse_in_memory_bitop. (*bitset_in_memory, *bitinvert_in_memory, *bitclr_in_memory): Convert to named insn, correct maximum insn length. gcc/testsuite/ PR target/83831 * gcc.target/rx/pr83831.c: New tests. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@257655 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 18 ++++++ gcc/config/rx/rx-protos.h | 106 ++++++++++++++++++++++++++++++++ gcc/config/rx/rx.c | 82 +++++++++++++++++++++++++ gcc/config/rx/rx.md | 112 +++++++++++++++++++++++++++------- gcc/testsuite/ChangeLog | 5 ++ gcc/testsuite/gcc.target/rx/pr83831.c | 77 +++++++++++++++++++++++ 6 files changed, 377 insertions(+), 23 deletions(-) create mode 100644 gcc/testsuite/gcc.target/rx/pr83831.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index bcaf137e461..22589babaa6 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,21 @@ +2018-02-14 Oleg Endo + + PR target/83831 + * config/rx/rx-protos.h (rx_reg_dead_or_unused_after_insn, + rx_copy_reg_dead_or_unused_notes, rx_fuse_in_memory_bitop): New + declarations. + (set_of_reg): New struct. + (rx_find_set_of_reg, rx_find_use_of_reg): New functions. + * config/rx/rx.c (rx_reg_dead_or_unused_after_insn, + rx_copy_reg_dead_or_unused_notes, rx_fuse_in_memory_bitop): New + functions. + * config/rx/rx.md (andsi3, iorsi3, xorsi3): Convert to insn_and_split. + Split into bitclr, bitset, bitinvert patterns if appropriate. + (*bitset, *bitinvert, *bitclr): Convert to named insn_and_split and + use rx_fuse_in_memory_bitop. + (*bitset_in_memory, *bitinvert_in_memory, *bitclr_in_memory): Convert + to named insn, correct maximum insn length. + 2018-02-14 Jozef Lawrynowicz PR target/79242 diff --git a/gcc/config/rx/rx-protos.h b/gcc/config/rx/rx-protos.h index b3c5bfc7a7f..0bb885d2da1 100644 --- a/gcc/config/rx/rx-protos.h +++ b/gcc/config/rx/rx-protos.h @@ -63,6 +63,112 @@ extern void rx_notice_update_cc (rtx, rtx); extern void rx_split_cbranch (machine_mode, enum rtx_code, rtx, rtx, rtx); extern machine_mode rx_select_cc_mode (enum rtx_code, rtx, rtx); + +extern bool rx_reg_dead_or_unused_after_insn (const rtx_insn* i, int regno); +extern void rx_copy_reg_dead_or_unused_notes (rtx reg, const rtx_insn* src, + rtx_insn* dst); + +extern bool rx_fuse_in_memory_bitop (rtx* operands, rtx_insn* curr_insn, + rtx (*gen_insn)(rtx, rtx)); + +/* Result value of rx_find_set_of_reg. */ +struct set_of_reg +{ + /* The insn where sh_find_set_of_reg stopped looking. + Can be NULL_RTX if the end of the insn list was reached. */ + rtx_insn* insn; + + /* The set rtx of the specified reg if found, NULL_RTX otherwise. */ + const_rtx set_rtx; + + /* The set source rtx of the specified reg if found, NULL_RTX otherwise. + Usually, this is the most interesting return value. */ + rtx set_src; +}; + +/* FIXME: Copy-pasta from SH. Move to rtl.h. + Given a reg rtx and a start insn, try to find the insn that sets + the specified reg by using the specified insn stepping function, + such as 'prev_nonnote_nondebug_insn_bb'. When the insn is found, + try to extract the rtx of the reg set. */ +template inline set_of_reg +rx_find_set_of_reg (rtx reg, rtx_insn* insn, F stepfunc, + bool ignore_reg_reg_copies = false) +{ + set_of_reg result; + result.insn = insn; + result.set_rtx = NULL_RTX; + result.set_src = NULL_RTX; + + if (!REG_P (reg) || insn == NULL_RTX) + return result; + + for (rtx_insn* i = stepfunc (insn); i != NULL_RTX; i = stepfunc (i)) + { + if (BARRIER_P (i)) + break; + if (!INSN_P (i) || DEBUG_INSN_P (i)) + continue; + if (reg_set_p (reg, i)) + { + if (CALL_P (i)) + break; + + result.insn = i; + result.set_rtx = set_of (reg, i); + + if (result.set_rtx == NULL_RTX || GET_CODE (result.set_rtx) != SET) + break; + + result.set_src = XEXP (result.set_rtx, 1); + + if (ignore_reg_reg_copies && REG_P (result.set_src)) + { + reg = result.set_src; + continue; + } + if (ignore_reg_reg_copies && SUBREG_P (result.set_src) + && REG_P (SUBREG_REG (result.set_src))) + { + reg = SUBREG_REG (result.set_src); + continue; + } + + break; + } + } + + /* If the searched reg is found inside a (mem (post_inc:SI (reg))), set_of + will return NULL and set_rtx will be NULL. + In this case report a 'not found'. result.insn will always be non-null + at this point, so no need to check it. */ + if (result.set_src != NULL && result.set_rtx == NULL) + result.set_src = NULL; + + return result; +} + +/* FIXME: Move to rtlh.h. */ +template inline rtx_insn* +rx_find_use_of_reg (rtx reg, rtx_insn* insn, F stepfunc) +{ + if (!REG_P (reg) || insn == NULL_RTX) + return NULL; + + for (rtx_insn* i = stepfunc (insn); i != NULL_RTX; i = stepfunc (i)) + { + if (BARRIER_P (i)) + break; + if (!INSN_P (i) || DEBUG_INSN_P (i)) + continue; + if (reg_overlap_mentioned_p (reg, PATTERN (i)) + || (CALL_P (i) && find_reg_fusage (i, USE, reg))) + return i; + } + + return NULL; +} + #endif #endif /* GCC_RX_PROTOS_H */ diff --git a/gcc/config/rx/rx.c b/gcc/config/rx/rx.c index be8229818ae..0eaf418cd71 100644 --- a/gcc/config/rx/rx.c +++ b/gcc/config/rx/rx.c @@ -3439,6 +3439,88 @@ rx_atomic_sequence::~rx_atomic_sequence (void) emit_insn (gen_mvtc (GEN_INT (CTRLREG_PSW), m_prev_psw_reg)); } +/* Given an insn and a reg number, tell whether the reg dies or is unused + after the insn. */ +bool +rx_reg_dead_or_unused_after_insn (const rtx_insn* i, int regno) +{ + return find_regno_note (i, REG_DEAD, regno) != NULL + || find_regno_note (i, REG_UNUSED, regno) != NULL; +} + +/* Copy dead and unused notes from SRC to DST for the specified REGNO. */ +void +rx_copy_reg_dead_or_unused_notes (rtx reg, const rtx_insn* src, rtx_insn* dst) +{ + int regno = REGNO (SUBREG_P (reg) ? SUBREG_REG (reg) : reg); + + if (rtx note = find_regno_note (src, REG_DEAD, regno)) + add_shallow_copy_of_reg_note (dst, note); + + if (rtx note = find_regno_note (src, REG_UNUSED, regno)) + add_shallow_copy_of_reg_note (dst, note); +} + +/* Try to fuse the current bit-operation insn with the surrounding memory load + and store. */ +bool +rx_fuse_in_memory_bitop (rtx* operands, rtx_insn* curr_insn, + rtx (*gen_insn)(rtx, rtx)) +{ + rtx op2_reg = SUBREG_P (operands[2]) ? SUBREG_REG (operands[2]) : operands[2]; + + set_of_reg op2_def = rx_find_set_of_reg (op2_reg, curr_insn, + prev_nonnote_nondebug_insn_bb); + if (op2_def.set_src == NULL_RTX + || !MEM_P (op2_def.set_src) + || GET_MODE (op2_def.set_src) != QImode + || !rx_is_restricted_memory_address (XEXP (op2_def.set_src, 0), + GET_MODE (op2_def.set_src)) + || reg_used_between_p (operands[2], op2_def.insn, curr_insn) + || !rx_reg_dead_or_unused_after_insn (curr_insn, REGNO (op2_reg)) + ) + return false; + + /* The register operand originates from a memory load and the memory load + could be fused with the bitop insn. + Look for the following memory store with the same memory operand. */ + rtx mem = op2_def.set_src; + + /* If the memory is an auto-mod address, it can't be fused. */ + if (GET_CODE (XEXP (mem, 0)) == POST_INC + || GET_CODE (XEXP (mem, 0)) == PRE_INC + || GET_CODE (XEXP (mem, 0)) == POST_DEC + || GET_CODE (XEXP (mem, 0)) == PRE_DEC) + return false; + + rtx_insn* op0_use = rx_find_use_of_reg (operands[0], curr_insn, + next_nonnote_nondebug_insn_bb); + if (op0_use == NULL + || !(GET_CODE (PATTERN (op0_use)) == SET + && RX_REG_P (XEXP (PATTERN (op0_use), 1)) + && reg_overlap_mentioned_p (operands[0], XEXP (PATTERN (op0_use), 1)) + && rtx_equal_p (mem, XEXP (PATTERN (op0_use), 0))) + || !rx_reg_dead_or_unused_after_insn (op0_use, REGNO (operands[0])) + || reg_set_between_p (operands[2], curr_insn, op0_use)) + return false; + + /* If the load-modify-store operation is fused it could potentially modify + load/store ordering if there are other memory accesses between the load + and the store for this insn. If there are volatile mems between the load + and store it's better not to change the ordering. If there is a call + between the load and store, it's also not safe to fuse it. */ + for (rtx_insn* i = next_nonnote_nondebug_insn_bb (op2_def.insn); + i != NULL && i != op0_use; + i = next_nonnote_nondebug_insn_bb (i)) + if (volatile_insn_p (PATTERN (i)) || CALL_P (i)) + return false; + + emit_insn (gen_insn (mem, operands[1])); + set_insn_deleted (op2_def.insn); + set_insn_deleted (op0_use); + return true; +} + /* Implement TARGET_HARD_REGNO_NREGS. */ static unsigned int diff --git a/gcc/config/rx/rx.md b/gcc/config/rx/rx.md index 3fb2ac854b0..116d4d4a939 100644 --- a/gcc/config/rx/rx.md +++ b/gcc/config/rx/rx.md @@ -1094,7 +1094,7 @@ DONE; }) -(define_insn "andsi3" +(define_insn_and_split "andsi3" [(set (match_operand:SI 0 "register_operand" "=r,r,r,r,r,r,r,r,r") (and:SI (match_operand:SI 1 "register_operand" "%0,0,0,0,0,0,r,r,0") (match_operand:SI 2 "rx_source_operand" "r,Uint04,Sint08,Sint16,Sint24,i,0,r,Q"))) @@ -1110,6 +1110,21 @@ and\t%1, %0 and\t%2, %1, %0 and\t%Q2, %0" + "&& RX_REG_P (operands[1]) && CONST_INT_P (operands[2]) + && pow2p_hwi (~UINTVAL (operands[2]))" + [(const_int 0)] +{ + /* For negated single bit constants use the bclr insn for smaller code. */ + + if (!rx_reg_dead_or_unused_after_insn (curr_insn, CC_REG)) + FAIL; + + rx_copy_reg_dead_or_unused_notes (operands[1], curr_insn, + emit_insn (gen_bitclr (operands[0], + GEN_INT (exact_log2 (~UINTVAL (operands[2]))), + operands[1]))); + DONE; +} [(set_attr "timings" "11,11,11,11,11,11,11,11,33") (set_attr "length" "2,2,3,4,5,6,2,5,5")] ) @@ -1383,7 +1398,7 @@ [(set_attr "length" "2,3")] ) -(define_insn "iorsi3" +(define_insn_and_split "iorsi3" [(set (match_operand:SI 0 "register_operand" "=r,r,r,r,r,r,r,r,r") (ior:SI (match_operand:SI 1 "register_operand" "%0,0,0,0,0,0,r,r,0") (match_operand:SI 2 "rx_source_operand" "r,Uint04,Sint08,Sint16,Sint24,i,0,r,Q"))) @@ -1399,6 +1414,21 @@ or\t%1, %0 or\t%2, %1, %0 or\t%Q2, %0" + "&& RX_REG_P (operands[1]) && CONST_INT_P (operands[2]) + && pow2p_hwi (UINTVAL (operands[2]))" + [(const_int 0)] +{ + /* For single bit constants use the bset insn for smaller code. */ + + if (!rx_reg_dead_or_unused_after_insn (curr_insn, CC_REG)) + FAIL; + + rx_copy_reg_dead_or_unused_notes (operands[1], curr_insn, + emit_insn (gen_bitset (operands[0], + GEN_INT (exact_log2 (UINTVAL (operands[2]))), + operands[1]))); + DONE; +} [(set_attr "timings" "11,11,11,11,11,11,11,11,33") (set_attr "length" "2,2,3,4,5,6,2,3,5")] ) @@ -1704,7 +1734,7 @@ DONE; }) -(define_insn "xorsi3" +(define_insn_and_split "xorsi3" [(set (match_operand:SI 0 "register_operand" "=r,r,r,r,r,r") (xor:SI (match_operand:SI 1 "register_operand" "%0,0,0,0,0,0") (match_operand:SI 2 "rx_source_operand" @@ -1712,6 +1742,21 @@ (clobber (reg:CC CC_REG))] "" "xor\t%Q2, %0" + "&& RX_REG_P (operands[1]) && CONST_INT_P (operands[2]) + && pow2p_hwi (UINTVAL (operands[2]))" + [(const_int 0)] +{ + /* For single bit constants use the bnot insn for smaller code. */ + + if (!rx_reg_dead_or_unused_after_insn (curr_insn, CC_REG)) + FAIL; + + rx_copy_reg_dead_or_unused_notes (operands[1], curr_insn, + emit_insn (gen_bitinvert (operands[0], + GEN_INT (exact_log2 (UINTVAL (operands[2]))), + operands[1]))); + DONE; +} [(set_attr "timings" "11,11,11,11,11,33") (set_attr "length" "3,4,5,6,7,6")] ) @@ -1960,50 +2005,63 @@ ;; Bit manipulation instructions. -;; ??? The *_in_memory patterns will not be matched without further help. -;; At one time we had the insv expander generate them, but I suspect that -;; in general we get better performance by exposing the register load to -;; the optimizers. -;; -;; An alternate solution would be to re-organize these patterns such -;; that allow both register and memory operands. This would allow the -;; register allocator to spill and not load the register operand. This -;; would be possible only for operations for which we have a constant -;; bit offset, so that we can adjust the address by ofs/8 and replace -;; the offset in the insn by ofs%8. - -(define_insn "*bitset" +;; The *_in_memory patterns will not be matched automatically, not even with +;; combiner bridge patterns. Especially when the memory operands have a +;; displacement, the resulting patterns look too complex. +;; Instead we manually look around the matched insn to see if there is a +;; preceeding memory load and a following memory store of the modified register +;; which can be fused into the single *_in_memory insn. +;; Do that before register allocation, as it can eliminate one temporary +;; register that needs to be allocated. + +(define_insn_and_split "bitset" [(set (match_operand:SI 0 "register_operand" "=r") (ior:SI (ashift:SI (const_int 1) (match_operand:SI 1 "rx_shift_operand" "ri")) (match_operand:SI 2 "register_operand" "0")))] "" "bset\t%1, %0" + "&& can_create_pseudo_p ()" + [(const_int 0)] +{ + if (rx_fuse_in_memory_bitop (operands, curr_insn, &gen_bitset_in_memory)) + DONE; + else + FAIL; +} [(set_attr "length" "3")] ) -(define_insn "*bitset_in_memory" +(define_insn "bitset_in_memory" [(set (match_operand:QI 0 "rx_restricted_mem_operand" "+Q") (ior:QI (ashift:QI (const_int 1) (match_operand:QI 1 "nonmemory_operand" "ri")) (match_dup 0)))] "" "bset\t%1, %0.B" - [(set_attr "length" "3") + [(set_attr "length" "5") (set_attr "timings" "33")] ) -(define_insn "*bitinvert" +(define_insn_and_split "bitinvert" [(set (match_operand:SI 0 "register_operand" "=r") (xor:SI (ashift:SI (const_int 1) (match_operand:SI 1 "rx_shift_operand" "ri")) (match_operand:SI 2 "register_operand" "0")))] "" "bnot\t%1, %0" + "&& can_create_pseudo_p ()" + [(const_int 0)] +{ + if (rx_fuse_in_memory_bitop (operands, curr_insn, &gen_bitinvert_in_memory)) + DONE; + else + FAIL; +} [(set_attr "length" "3")] ) -(define_insn "*bitinvert_in_memory" +(define_insn "bitinvert_in_memory" [(set (match_operand:QI 0 "rx_restricted_mem_operand" "+Q") (xor:QI (ashift:QI (const_int 1) (match_operand:QI 1 "nonmemory_operand" "ri")) @@ -2014,7 +2072,7 @@ (set_attr "timings" "33")] ) -(define_insn "*bitclr" +(define_insn_and_split "bitclr" [(set (match_operand:SI 0 "register_operand" "=r") (and:SI (not:SI (ashift:SI @@ -2023,10 +2081,18 @@ (match_operand:SI 2 "register_operand" "0")))] "" "bclr\t%1, %0" + "&& can_create_pseudo_p ()" + [(const_int 0)] +{ + if (rx_fuse_in_memory_bitop (operands, curr_insn, &gen_bitclr_in_memory)) + DONE; + else + FAIL; +} [(set_attr "length" "3")] ) -(define_insn "*bitclr_in_memory" +(define_insn "bitclr_in_memory" [(set (match_operand:QI 0 "rx_restricted_mem_operand" "+Q") (and:QI (not:QI (ashift:QI @@ -2035,7 +2101,7 @@ (match_dup 0)))] "" "bclr\t%1, %0.B" - [(set_attr "length" "3") + [(set_attr "length" "5") (set_attr "timings" "33")] ) diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index a8dc606ad35..776542aa5fa 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2018-02-14 Oleg Endo + + PR target/83831 + * gcc.target/rx/pr83831.c: New tests. + 2018-02-14 Jozef Lawrynowicz PR target/79242 diff --git a/gcc/testsuite/gcc.target/rx/pr83831.c b/gcc/testsuite/gcc.target/rx/pr83831.c new file mode 100644 index 00000000000..1bd1e2b429b --- /dev/null +++ b/gcc/testsuite/gcc.target/rx/pr83831.c @@ -0,0 +1,77 @@ +/* { dg-do compile } */ +/* { dg-options "-O1" } */ +/* { dg-final { scan-assembler-times "bclr" 6 } } */ +/* { dg-final { scan-assembler-times "bset" 6 } } */ +/* { dg-final { scan-assembler-times "bnot" 6 } } */ + +void +test_0 (char* x, unsigned int y) +{ + /* Expect 4x bclr here. */ + x[0] &= 0xFE; + x[1] = y & ~(1 << 1); + x[2] &= 0xFE; + x[65000] &= 0xFE; +} + +unsigned int +test_1 (unsigned int x, unsigned int y) +{ + /* Expect 1x bclr here. */ + return x & ~(1 << y); +} + +unsigned int +test_2 (unsigned int x) +{ + /* Expect 1x bclr here. */ + return x & ~(1 << 1); +} + +void +test_3 (char* x, unsigned int y) +{ + /* Expect 4x bset here. */ + x[0] |= 0x10; + x[1] = y | (1 << 1); + x[2] |= 0x10; + x[65000] |= 0x10; +} + +unsigned int +test_4 (unsigned int x, unsigned int y) +{ + /* Expect 1x bset here. */ + return x | (1 << y); +} + +unsigned int +test_5 (unsigned int x) +{ + /* Expect 1x bset here. */ + return x | (1 << 8); +} + +void +test_6 (char* x, unsigned int y) +{ + /* Expect 4x bnot here. */ + x[0] ^= 0x10; + x[1] = y ^ (1 << 1); + x[2] ^= 0x10; + x[65000] ^= 0x10; +} + +unsigned int +test_7 (unsigned int x, unsigned int y) +{ + /* Expect 1x bnot here. */ + return x ^ (1 << y); +} + +unsigned int +test_8 (unsigned int x) +{ + /* Expect 1x bnot here. */ + return x ^ (1 << 8); +} -- cgit v1.2.1 From b33d265790f05f580893be338f3565da650dd2e3 Mon Sep 17 00:00:00 2001 From: rsandifo Date: Wed, 14 Feb 2018 13:14:51 +0000 Subject: Check array indices in object_address_invariant_in_loop_p (PR 84357) object_address_invariant_in_loop_p ignored ARRAY_REF indices on the basis that: /* Index of the ARRAY_REF was zeroed in analyze_indices, thus we only need to check the stride and the lower bound of the reference. */ That was true back in 2007 when the code was added: static void dr_analyze_indices (struct data_reference *dr, struct loop *nest) { [...] while (handled_component_p (aref)) { if (TREE_CODE (aref) == ARRAY_REF) { op = TREE_OPERAND (aref, 1); access_fn = analyze_scalar_evolution (loop, op); access_fn = resolve_mixers (nest, access_fn); VEC_safe_push (tree, heap, access_fns, access_fn); TREE_OPERAND (aref, 1) = build_int_cst (TREE_TYPE (op), 0); } aref = TREE_OPERAND (aref, 0); } but the assignment was removed a few years ago. We were therefore treating "two->arr[i]" and "three->arr[i]" as loop invariant. 2018-02-14 Richard Sandiford gcc/ PR tree-optimization/84357 * tree-data-ref.c (object_address_invariant_in_loop_p): Check operand 1 of an ARRAY_REF too. gcc/testsuite/ PR tree-optimization/84357 * gcc.dg/vect/pr84357.c: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@257657 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 6 ++++++ gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/gcc.dg/vect/pr84357.c | 31 +++++++++++++++++++++++++++++++ gcc/tree-data-ref.c | 11 ++++------- 4 files changed, 46 insertions(+), 7 deletions(-) create mode 100644 gcc/testsuite/gcc.dg/vect/pr84357.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 22589babaa6..cc294407691 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2018-02-14 Richard Sandiford + + PR tree-optimization/84357 + * tree-data-ref.c (object_address_invariant_in_loop_p): Check + operand 1 of an ARRAY_REF too. + 2018-02-14 Oleg Endo PR target/83831 diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 776542aa5fa..473a2723012 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2018-02-14 Richard Sandiford + + PR tree-optimization/84357 + * gcc.dg/vect/pr84357.c: New test. + 2018-02-14 Oleg Endo PR target/83831 diff --git a/gcc/testsuite/gcc.dg/vect/pr84357.c b/gcc/testsuite/gcc.dg/vect/pr84357.c new file mode 100644 index 00000000000..cd3cc4a92ed --- /dev/null +++ b/gcc/testsuite/gcc.dg/vect/pr84357.c @@ -0,0 +1,31 @@ +/* { dg-do compile } */ +/* { dg-additional-options "-Wall" } */ + +#define COUNT 32 + +typedef struct s1 { + unsigned char c; +} s1; + +typedef struct s2 +{ + char pad; + s1 arr[COUNT]; +} s2; + +typedef struct s3 { + s1 arr[COUNT]; +} s3; + +s2 * get_s2(); +s3 * gActiveS3; +void foo() +{ + s3 * three = gActiveS3; + s2 * two = get_s2(); + + for (int i = 0; i < COUNT; i++) + { + two->arr[i].c = three->arr[i].c; + } +} diff --git a/gcc/tree-data-ref.c b/gcc/tree-data-ref.c index fdb2ac1b845..a886329966c 100644 --- a/gcc/tree-data-ref.c +++ b/gcc/tree-data-ref.c @@ -2200,13 +2200,10 @@ object_address_invariant_in_loop_p (const struct loop *loop, const_tree obj) { if (TREE_CODE (obj) == ARRAY_REF) { - /* Index of the ARRAY_REF was zeroed in analyze_indices, thus we only - need to check the stride and the lower bound of the reference. */ - if (chrec_contains_symbols_defined_in_loop (TREE_OPERAND (obj, 2), - loop->num) - || chrec_contains_symbols_defined_in_loop (TREE_OPERAND (obj, 3), - loop->num)) - return false; + for (int i = 1; i < 4; ++i) + if (chrec_contains_symbols_defined_in_loop (TREE_OPERAND (obj, i), + loop->num)) + return false; } else if (TREE_CODE (obj) == COMPONENT_REF) { -- cgit v1.2.1 From 9d9c29a1aa9837578feb803888454a5844537ebf Mon Sep 17 00:00:00 2001 From: jakub Date: Wed, 14 Feb 2018 14:19:36 +0000 Subject: PR other/82368 * elf.c (EM_PPC64, EF_PPC64_ABI): Undefine and define. (struct elf_ppc64_opd_data): New type. (elf_initialize_syminfo): Add opd argument, handle symbols pointing into the PowerPC64 ELFv1 .opd section. (elf_add): Read .opd section on PowerPC64 ELFv1, pass pointer to structure with .opd data to elf_initialize_syminfo. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@257658 138bc75d-0d04-0410-961f-82ee72b054a4 --- libbacktrace/ChangeLog | 10 ++++++++ libbacktrace/elf.c | 63 +++++++++++++++++++++++++++++++++++++++++++++++--- 2 files changed, 70 insertions(+), 3 deletions(-) diff --git a/libbacktrace/ChangeLog b/libbacktrace/ChangeLog index 9ebce200e37..60e67a72de7 100644 --- a/libbacktrace/ChangeLog +++ b/libbacktrace/ChangeLog @@ -1,3 +1,13 @@ +2018-02-14 Jakub Jelinek + + PR other/82368 + * elf.c (EM_PPC64, EF_PPC64_ABI): Undefine and define. + (struct elf_ppc64_opd_data): New type. + (elf_initialize_syminfo): Add opd argument, handle symbols + pointing into the PowerPC64 ELFv1 .opd section. + (elf_add): Read .opd section on PowerPC64 ELFv1, pass pointer + to structure with .opd data to elf_initialize_syminfo. + 2018-01-31 Ian Lance Taylor * elf.c (elf_add): Close descriptor if we use a debugfile. diff --git a/libbacktrace/elf.c b/libbacktrace/elf.c index 3ee1dbeaf79..8ff3c47320e 100644 --- a/libbacktrace/elf.c +++ b/libbacktrace/elf.c @@ -165,6 +165,8 @@ dl_iterate_phdr (int (*callback) (struct dl_phdr_info *, #undef ELFDATA2MSB #undef EV_CURRENT #undef ET_DYN +#undef EM_PPC64 +#undef EF_PPC64_ABI #undef SHN_LORESERVE #undef SHN_XINDEX #undef SHN_UNDEF @@ -245,6 +247,9 @@ typedef struct { #define ET_DYN 3 +#define EM_PPC64 21 +#define EF_PPC64_ABI 3 + typedef struct { b_elf_word sh_name; /* Section name, index in string tbl */ b_elf_word sh_type; /* Type of section */ @@ -405,6 +410,20 @@ struct elf_syminfo_data size_t count; }; +/* Information about PowerPC64 ELFv1 .opd section. */ + +struct elf_ppc64_opd_data +{ + /* Address of the .opd section. */ + b_elf_addr addr; + /* Section data. */ + const char *data; + /* Size of the .opd section. */ + size_t size; + /* Corresponding section view. */ + struct backtrace_view view; +}; + /* Compute the CRC-32 of BUF/LEN. This uses the CRC used for .gnu_debuglink files. */ @@ -569,7 +588,8 @@ elf_initialize_syminfo (struct backtrace_state *state, const unsigned char *symtab_data, size_t symtab_size, const unsigned char *strtab, size_t strtab_size, backtrace_error_callback error_callback, - void *data, struct elf_syminfo_data *sdata) + void *data, struct elf_syminfo_data *sdata, + struct elf_ppc64_opd_data *opd) { size_t sym_count; const b_elf_sym *sym; @@ -620,7 +640,17 @@ elf_initialize_syminfo (struct backtrace_state *state, return 0; } elf_symbols[j].name = (const char *) strtab + sym->st_name; - elf_symbols[j].address = sym->st_value + base_address; + /* Special case PowerPC64 ELFv1 symbols in .opd section, if the symbol + is a function descriptor, read the actual code address from the + descriptor. */ + if (opd + && sym->st_value >= opd->addr + && sym->st_value < opd->addr + opd->size) + elf_symbols[j].address + = *(const b_elf_addr *) (opd->data + (sym->st_value - opd->addr)); + else + elf_symbols[j].address = sym->st_value; + elf_symbols[j].address += base_address; elf_symbols[j].size = sym->st_size; ++j; } @@ -2637,6 +2667,7 @@ elf_add (struct backtrace_state *state, const char *filename, int descriptor, int debug_view_valid; unsigned int using_debug_view; uint16_t *zdebug_table; + struct elf_ppc64_opd_data opd_data, *opd; if (!debuginfo) { @@ -2655,6 +2686,7 @@ elf_add (struct backtrace_state *state, const char *filename, int descriptor, debuglink_name = NULL; debuglink_crc = 0; debug_view_valid = 0; + opd = NULL; if (!backtrace_get_view (state, descriptor, 0, sizeof ehdr, error_callback, data, &ehdr_view)) @@ -2857,6 +2889,23 @@ elf_add (struct backtrace_state *state, const char *filename, int descriptor, debuglink_crc = *(const uint32_t*)(debuglink_data + crc_offset); } } + + /* Read the .opd section on PowerPC64 ELFv1. */ + if (ehdr.e_machine == EM_PPC64 + && (ehdr.e_flags & EF_PPC64_ABI) < 2 + && shdr->sh_type == SHT_PROGBITS + && strcmp (name, ".opd") == 0) + { + if (!backtrace_get_view (state, descriptor, shdr->sh_offset, + shdr->sh_size, error_callback, data, + &opd_data.view)) + goto fail; + + opd = &opd_data; + opd->addr = shdr->sh_addr; + opd->data = (const char *) opd_data.view.data; + opd->size = shdr->sh_size; + } } if (symtab_shndx == 0) @@ -2898,7 +2947,7 @@ elf_add (struct backtrace_state *state, const char *filename, int descriptor, if (!elf_initialize_syminfo (state, base_address, symtab_view.data, symtab_shdr->sh_size, strtab_view.data, strtab_shdr->sh_size, - error_callback, data, sdata)) + error_callback, data, sdata, opd)) { backtrace_free (state, sdata, sizeof *sdata, error_callback, data); goto fail; @@ -2951,6 +3000,12 @@ elf_add (struct backtrace_state *state, const char *filename, int descriptor, buildid_view_valid = 0; } + if (opd) + { + backtrace_release_view (state, &opd->view, error_callback, data); + opd = NULL; + } + if (debuglink_name != NULL) { int d; @@ -3139,6 +3194,8 @@ elf_add (struct backtrace_state *state, const char *filename, int descriptor, backtrace_release_view (state, &buildid_view, error_callback, data); if (debug_view_valid) backtrace_release_view (state, &debug_view, error_callback, data); + if (opd) + backtrace_release_view (state, &opd->view, error_callback, data); if (descriptor != -1) backtrace_close (descriptor, error_callback, data); return 0; -- cgit v1.2.1 From 0b5cd8c1e3779ee8f56fb6ee4a0c724156b5d15d Mon Sep 17 00:00:00 2001 From: paolo Date: Wed, 14 Feb 2018 14:19:50 +0000 Subject: 2018-02-14 Paolo Carlini * cp-tree.h (do_auto_deduction (tree, tree, tree)): Remove. (do_auto_deduction (tree, tree, tree, tsubst_flags_t, auto_deduction_context, tree, int): Add defaults. * pt.c (do_auto_deduction (tree, tree, tree)): Remove definition. (tsubst_omp_for_iterator): Adjust do_auto_deduction call, forward tsubst_flags_t argument. * init.c (build_new): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@257659 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/cp/ChangeLog | 10 ++++++++++ gcc/cp/cp-tree.h | 7 ++++--- gcc/cp/init.c | 2 +- gcc/cp/pt.c | 13 +------------ 4 files changed, 16 insertions(+), 16 deletions(-) diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index ed44d9e2842..4955bf9e1a0 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,13 @@ +2018-02-14 Paolo Carlini + + * cp-tree.h (do_auto_deduction (tree, tree, tree)): Remove. + (do_auto_deduction (tree, tree, tree, tsubst_flags_t, + auto_deduction_context, tree, int): Add defaults. + * pt.c (do_auto_deduction (tree, tree, tree)): Remove definition. + (tsubst_omp_for_iterator): Adjust do_auto_deduction call, forward + tsubst_flags_t argument. + * init.c (build_new): Likewise. + 2018-02-13 Jakub Jelinek PR c++/84364 diff --git a/gcc/cp/cp-tree.h b/gcc/cp/cp-tree.h index 9a9e9f0bbcb..9038d677b2d 100644 --- a/gcc/cp/cp-tree.h +++ b/gcc/cp/cp-tree.h @@ -6470,10 +6470,11 @@ extern tree make_auto (void); extern tree make_decltype_auto (void); extern tree make_template_placeholder (tree); extern bool template_placeholder_p (tree); -extern tree do_auto_deduction (tree, tree, tree); extern tree do_auto_deduction (tree, tree, tree, - tsubst_flags_t, - auto_deduction_context, + tsubst_flags_t + = tf_warning_or_error, + auto_deduction_context + = adc_unspecified, tree = NULL_TREE, int = LOOKUP_NORMAL); extern tree type_uses_auto (tree); diff --git a/gcc/cp/init.c b/gcc/cp/init.c index 233f41c2592..d0d14abdc9f 100644 --- a/gcc/cp/init.c +++ b/gcc/cp/init.c @@ -3593,7 +3593,7 @@ build_new (vec **placement, tree type, tree nelts, d_init = (**init)[0]; d_init = resolve_nondeduced_context (d_init, complain); } - type = do_auto_deduction (type, d_init, auto_node); + type = do_auto_deduction (type, d_init, auto_node, complain); } } diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c index 222084df4cb..e62e320fe31 100644 --- a/gcc/cp/pt.c +++ b/gcc/cp/pt.c @@ -15785,7 +15785,7 @@ tsubst_omp_for_iterator (tree t, int i, tree declv, tree orig_declv, tree auto_node = type_uses_auto (TREE_TYPE (decl)); if (auto_node && init) TREE_TYPE (decl) - = do_auto_deduction (TREE_TYPE (decl), init, auto_node); + = do_auto_deduction (TREE_TYPE (decl), init, auto_node, complain); gcc_assert (!type_dependent_expression_p (decl)); @@ -25940,17 +25940,6 @@ do_class_deduction (tree ptype, tree tmpl, tree init, int flags, return cp_build_qualified_type (TREE_TYPE (call), cp_type_quals (ptype)); } -/* Replace occurrences of 'auto' in TYPE with the appropriate type deduced - from INIT. AUTO_NODE is the TEMPLATE_TYPE_PARM used for 'auto' in TYPE. */ - -tree -do_auto_deduction (tree type, tree init, tree auto_node) -{ - return do_auto_deduction (type, init, auto_node, - tf_warning_or_error, - adc_unspecified); -} - /* Replace occurrences of 'auto' in TYPE with the appropriate type deduced from INIT. AUTO_NODE is the TEMPLATE_TYPE_PARM used for 'auto' in TYPE. The CONTEXT determines the context in which auto deduction is performed -- cgit v1.2.1 From 1c9aa9c6652df0be177e1b578cc174712f474a28 Mon Sep 17 00:00:00 2001 From: itsimbal Date: Wed, 14 Feb 2018 15:06:21 +0000 Subject: Reimplement CET intrinsics for rdssp/incssp insn. Introduce a couple of new CET intrinsics for reading and updating a shadow stack pointer (_get_ssp and _inc_ssp). They replace the existing _rdssp[d|q] and _incssp[d|q] instrinsics. PR target/84239 * gcc/config/i386/cetintrin.h: Remove _rdssp[d|q] and add _get_ssp intrinsics. Remove argument from __builtin_ia32_rdssp[d|q]. * gcc/config/i386/i386-builtin-types.def: Add UINT_FTYPE_VOID. * gcc/config/i386/i386-builtin.def: Remove argument from __builtin_ia32_rdssp[d|q]. * gcc/config/i386/i386.c: Use UINT_FTYPE_VOID. Use ix86_expand_special_args_builtin for _rdssp[d|q]. * gcc/config/i386/i386.md: Remove argument from rdssp[si|di] insn. Clear register before usage. * doc/extend.texi: Remove argument from __builtin_ia32_rdssp[d|q]. Add documentation for new _get_ssp and _inc_ssp intrinsics. * testsuite/gcc.target/i386/cet-intrin-3.c: Use new _get_ssp and _inc_ssp intrinsics. * testsuite/gcc.target/i386/cet-intrin-4.c: Likewise. * testsuite/gcc.target/i386/cet-rdssp-1.c: Remove argument from __builtin_ia32_rdssp[d|q]. * libgcc/config/i386/shadow-stack-unwind.hi (_Unwind_Frames_Extra): Use new _get_ssp and _inc_ssp intrinsics. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@257660 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 16 +++++++ gcc/config/i386/cetintrin.h | 31 ++++++-------- gcc/config/i386/i386-builtin-types.def | 1 + gcc/config/i386/i386-builtin.def | 4 +- gcc/config/i386/i386.c | 3 +- gcc/config/i386/i386.md | 16 ++++--- gcc/doc/extend.texi | 62 +++++++++++++++++++++++++--- gcc/testsuite/ChangeLog | 9 ++++ gcc/testsuite/gcc.target/i386/cet-intrin-3.c | 10 ++--- gcc/testsuite/gcc.target/i386/cet-intrin-4.c | 25 +---------- gcc/testsuite/gcc.target/i386/cet-rdssp-1.c | 8 ++-- libgcc/ChangeLog | 6 +++ libgcc/config/i386/shadow-stack-unwind.h | 17 +++----- 13 files changed, 126 insertions(+), 82 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index cc294407691..b2bec8b574f 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,19 @@ +2018-02-14 Igor Tsimbalist + + PR target/84239 + * config/i386/cetintrin.h: Remove _rdssp[d|q] and + add _get_ssp intrinsics. Remove argument from + __builtin_ia32_rdssp[d|q]. + * config/i386/i386-builtin-types.def: Add UINT_FTYPE_VOID. + * config/i386/i386-builtin.def: Remove argument from + __builtin_ia32_rdssp[d|q]. + * config/i386/i386.c: Use UINT_FTYPE_VOID. Use + ix86_expand_special_args_builtin for _rdssp[d|q]. + * config/i386/i386.md: Remove argument from rdssp[si|di] insn. + Clear register before usage. + * doc/extend.texi: Remove argument from __builtin_ia32_rdssp[d|q]. + Add documentation for new _get_ssp and _inc_ssp intrinsics. + 2018-02-14 Richard Sandiford PR tree-optimization/84357 diff --git a/gcc/config/i386/cetintrin.h b/gcc/config/i386/cetintrin.h index 7a4b4d8bf24..e9abcf3c580 100644 --- a/gcc/config/i386/cetintrin.h +++ b/gcc/config/i386/cetintrin.h @@ -34,37 +34,32 @@ #define __DISABLE_SHSTK__ #endif /* __SHSTK__ */ -extern __inline unsigned int -__attribute__((__gnu_inline__, __always_inline__, __artificial__)) -_rdsspd (unsigned int __B) -{ - return __builtin_ia32_rdsspd (__B); -} - #ifdef __x86_64__ extern __inline unsigned long long __attribute__((__gnu_inline__, __always_inline__, __artificial__)) -_rdsspq (unsigned long long __B) +_get_ssp (void) { - return __builtin_ia32_rdsspq (__B); + return __builtin_ia32_rdsspq (); } -#endif - -extern __inline void +#else +extern __inline unsigned int __attribute__((__gnu_inline__, __always_inline__, __artificial__)) -_incsspd (unsigned int __B) +_get_ssp (void) { - __builtin_ia32_incsspd (__B); + return __builtin_ia32_rdsspd (); } +#endif -#ifdef __x86_64__ extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__)) -_incsspq (unsigned long long __B) +_inc_ssp (unsigned int __B) { - __builtin_ia32_incsspq (__B); -} +#ifdef __x86_64__ + __builtin_ia32_incsspq ((unsigned long long) __B); +#else + __builtin_ia32_incsspd (__B); #endif +} extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__)) diff --git a/gcc/config/i386/i386-builtin-types.def b/gcc/config/i386/i386-builtin-types.def index ba335490489..08360d23cbb 100644 --- a/gcc/config/i386/i386-builtin-types.def +++ b/gcc/config/i386/i386-builtin-types.def @@ -192,6 +192,7 @@ DEF_POINTER_TYPE (PCV64QI, V64QI, CONST) DEF_FUNCTION_TYPE (FLOAT128) DEF_FUNCTION_TYPE (UINT64) DEF_FUNCTION_TYPE (UNSIGNED) +DEF_FUNCTION_TYPE (UINT) DEF_FUNCTION_TYPE (USHORT) DEF_FUNCTION_TYPE (INT) DEF_FUNCTION_TYPE (VOID) diff --git a/gcc/config/i386/i386-builtin.def b/gcc/config/i386/i386-builtin.def index 169189d962c..a48019499bd 100644 --- a/gcc/config/i386/i386-builtin.def +++ b/gcc/config/i386/i386-builtin.def @@ -3043,7 +3043,7 @@ BDESC (OPTION_MASK_ISA_SHSTK, CODE_FOR_clrssbsy, "__builtin_ia32_clrssbsy", IX86 BDESC_END (CET, CET_NORMAL) BDESC_FIRST (cet_rdssp, CET_NORMAL, - OPTION_MASK_ISA_SHSTK, CODE_FOR_rdsspsi, "__builtin_ia32_rdsspd", IX86_BUILTIN_RDSSPD, UNKNOWN, (int) UINT_FTYPE_UINT) -BDESC (OPTION_MASK_ISA_SHSTK | OPTION_MASK_ISA_64BIT, CODE_FOR_rdsspdi, "__builtin_ia32_rdsspq", IX86_BUILTIN_RDSSPQ, UNKNOWN, (int) UINT64_FTYPE_UINT64) + OPTION_MASK_ISA_SHSTK, CODE_FOR_rdsspsi, "__builtin_ia32_rdsspd", IX86_BUILTIN_RDSSPD, UNKNOWN, (int) UINT_FTYPE_VOID) +BDESC (OPTION_MASK_ISA_SHSTK | OPTION_MASK_ISA_64BIT, CODE_FOR_rdsspdi, "__builtin_ia32_rdsspq", IX86_BUILTIN_RDSSPQ, UNKNOWN, (int) UINT64_FTYPE_VOID) BDESC_END (CET_NORMAL, MAX) diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index 020eef9fd7b..fa31f94d3e0 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -35708,6 +35708,7 @@ ix86_expand_special_args_builtin (const struct builtin_description *d, case INT_FTYPE_VOID: case USHORT_FTYPE_VOID: case UINT64_FTYPE_VOID: + case UINT_FTYPE_VOID: case UNSIGNED_FTYPE_VOID: nargs = 0; klass = load; @@ -38497,7 +38498,7 @@ s4fma_expand: && fcode <= IX86_BUILTIN__BDESC_CET_NORMAL_LAST) { i = fcode - IX86_BUILTIN__BDESC_CET_NORMAL_FIRST; - return ix86_expand_args_builtin (bdesc_cet_rdssp + i, exp, + return ix86_expand_special_args_builtin (bdesc_cet_rdssp + i, exp, target); } diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md index a4832bf696f..3998053a506 100644 --- a/gcc/config/i386/i386.md +++ b/gcc/config/i386/i386.md @@ -18391,8 +18391,8 @@ reg_ssp = gen_reg_rtx (word_mode); emit_insn (gen_rtx_SET (reg_ssp, const0_rtx)); emit_insn ((word_mode == SImode) - ? gen_rdsspsi (reg_ssp, reg_ssp) - : gen_rdsspdi (reg_ssp, reg_ssp)); + ? gen_rdsspsi (reg_ssp) + : gen_rdsspdi (reg_ssp)); emit_move_insn (mem, reg_ssp); } DONE; @@ -18437,8 +18437,8 @@ reg_ssp = gen_reg_rtx (word_mode); emit_insn (gen_rtx_SET (reg_ssp, const0_rtx)); emit_insn ((word_mode == SImode) - ? gen_rdsspsi (reg_ssp, reg_ssp) - : gen_rdsspdi (reg_ssp, reg_ssp)); + ? gen_rdsspsi (reg_ssp) + : gen_rdsspdi (reg_ssp)); mem_buf = gen_rtx_MEM (word_mode, plus_constant (Pmode, operands[0], 3 * GET_MODE_SIZE (ptr_mode))); @@ -20167,12 +20167,10 @@ ;; CET instructions (define_insn "rdssp" [(set (match_operand:SWI48x 0 "register_operand" "=r") - (unspec_volatile:SWI48x - [(match_operand:SWI48x 1 "register_operand" "0")] - UNSPECV_NOP_RDSSP))] + (unspec_volatile:SWI48x [(const_int 0)] UNSPECV_NOP_RDSSP))] "TARGET_SHSTK" - "rdssp\t%0" - [(set_attr "length" "4") + "xor{l}\t%k0, %k0\n\trdssp\t%0" + [(set_attr "length" "6") (set_attr "type" "other")]) (define_insn "incssp" diff --git a/gcc/doc/extend.texi b/gcc/doc/extend.texi index 4f79a92fc1d..5c3c5ec2dc8 100644 --- a/gcc/doc/extend.texi +++ b/gcc/doc/extend.texi @@ -12461,6 +12461,7 @@ instructions, but allow the compiler to schedule those calls. * TILEPro Built-in Functions:: * x86 Built-in Functions:: * x86 transactional memory intrinsics:: +* x86 control-flow protection intrinsics:: @end menu @node AArch64 Built-in Functions @@ -21772,13 +21773,17 @@ void __builtin_ia32_wrpkru (unsigned int) unsigned int __builtin_ia32_rdpkru () @end smallexample -The following built-in functions are available when @option{-mcet} is used. -They are used to support Intel Control-flow Enforcment Technology (CET). -Each built-in function generates the machine instruction that is part of the -function's name. +The following built-in functions are available when @option{-mcet} or +@option{-mshstk} option is used. They support shadow stack +machine instructions from Intel Control-flow Enforcement Technology (CET). +Each built-in function generates the machine instruction that is part +of the function's name. These are the internal low-level functions. +Normally the functions in @ref{x86 control-flow protection intrinsics} +should be used instead. + @smallexample -unsigned int __builtin_ia32_rdsspd (unsigned int) -unsigned long long __builtin_ia32_rdsspq (unsigned long long) +unsigned int __builtin_ia32_rdsspd (void) +unsigned long long __builtin_ia32_rdsspq (void) void __builtin_ia32_incsspd (unsigned int) void __builtin_ia32_incsspq (unsigned long long) void __builtin_ia32_saveprevssp(void); @@ -21885,6 +21890,51 @@ else Note that, in most cases, the transactional and non-transactional code must synchronize together to ensure consistency. +@node x86 control-flow protection intrinsics +@subsection x86 Control-Flow Protection Intrinsics + +@deftypefn {CET Function} {ret_type} _get_ssp (void) +Get the current value of shadow stack pointer if shadow stack support +from Intel CET is enabled in the hardware or @code{0} otherwise. +The @code{ret_type} is @code{unsigned long long} for 64-bit targets +and @code{unsigned int} for 32-bit targets. +@end deftypefn + +@deftypefn {CET Function} void _inc_ssp (unsigned int) +Increment the current shadow stack pointer by the size specified by the +function argument. The argument is masked to a byte value for security +reasons, so to increment by more than 255 bytes you must call the function +multiple times. +@end deftypefn + +The shadow stack unwind code looks like: + +@smallexample +#include + +/* Unwind the shadow stack for EH. */ +#define _Unwind_Frames_Extra(x) \ + do \ + @{ \ + _Unwind_Word ssp = _get_ssp (); \ + if (ssp != 0) \ + @{ \ + _Unwind_Word tmp = (x); \ + while (tmp > 255) \ + @{ \ + _inc_ssp (tmp); \ + tmp -= 255; \ + @} \ + _inc_ssp (tmp); \ + @} \ + @} \ + while (0) +@end smallexample + +@noindent +This code runs unconditionally on all 64-bit processors. For 32-bit +processors the code runs on those that support multi-byte NOP instructions. + @node Target Format Checks @section Format Checks Specific to Particular Target Machines diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 473a2723012..51aeba332d3 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,12 @@ +2018-02-14 Igor Tsimbalist + + PR target/84239 + * gcc.target/i386/cet-intrin-3.c: Use new _get_ssp and + _inc_ssp intrinsics. + * gcc.target/i386/cet-intrin-4.c: Likewise. + * gcc.target/i386/cet-rdssp-1.c: Remove argument from + __builtin_ia32_rdssp[d|q]. + 2018-02-14 Richard Sandiford PR tree-optimization/84357 diff --git a/gcc/testsuite/gcc.target/i386/cet-intrin-3.c b/gcc/testsuite/gcc.target/i386/cet-intrin-3.c index bcd7203fdb4..b98c1e928d5 100644 --- a/gcc/testsuite/gcc.target/i386/cet-intrin-3.c +++ b/gcc/testsuite/gcc.target/i386/cet-intrin-3.c @@ -10,24 +10,22 @@ unsigned int f1 () { - unsigned int x = 0; - return _rdsspd (x); + return _get_ssp (); } void f3 (unsigned int _a) { - _incsspd (_a); + _inc_ssp (_a); } #ifdef __x86_64__ unsigned long long f2 () { - unsigned long long x = 0; - return _rdsspq (x); + return _get_ssp (); } void f4 (unsigned int _a) { - _incsspq (_a); + _inc_ssp (_a); } #endif diff --git a/gcc/testsuite/gcc.target/i386/cet-intrin-4.c b/gcc/testsuite/gcc.target/i386/cet-intrin-4.c index 437a4cd690c..86957b2eebe 100644 --- a/gcc/testsuite/gcc.target/i386/cet-intrin-4.c +++ b/gcc/testsuite/gcc.target/i386/cet-intrin-4.c @@ -5,27 +5,4 @@ /* { dg-final { scan-assembler "incssp\[dq]\[ \t]+(%|)\[re]di" { target { ! ia32 } } } } */ #include - -unsigned int f1 () -{ - unsigned int x = 0; - return _rdsspd (x); -} - -void f3 (unsigned int _a) -{ - _incsspd (_a); -} - -#ifdef __x86_64__ -unsigned long long f2 () -{ - unsigned long long x = 0; - return _rdsspq (x); -} - -void f4 (unsigned int _a) -{ - _incsspq (_a); -} -#endif +#include "cet-intrin-3.c" diff --git a/gcc/testsuite/gcc.target/i386/cet-rdssp-1.c b/gcc/testsuite/gcc.target/i386/cet-rdssp-1.c index fb50ff43504..6cd24f63384 100644 --- a/gcc/testsuite/gcc.target/i386/cet-rdssp-1.c +++ b/gcc/testsuite/gcc.target/i386/cet-rdssp-1.c @@ -5,18 +5,18 @@ void _exit(int status) __attribute__ ((__noreturn__)); #ifdef __x86_64__ # define incssp(x) __builtin_ia32_incsspq (x) -# define rdssp(x) __builtin_ia32_rdsspq (x) +# define rdssp() __builtin_ia32_rdsspq () #else # define incssp(x) __builtin_ia32_incsspd (x) -# define rdssp(x) __builtin_ia32_rdsspd (x) +# define rdssp() __builtin_ia32_rdsspd () #endif static void __attribute__ ((noinline, noclone)) test (unsigned long frames) { - unsigned long ssp = 0; - ssp = rdssp (ssp); + unsigned long ssp; + ssp = rdssp (); if (ssp != 0) { unsigned long tmp = frames; diff --git a/libgcc/ChangeLog b/libgcc/ChangeLog index 1eb16631e03..692773d7d2d 100644 --- a/libgcc/ChangeLog +++ b/libgcc/ChangeLog @@ -1,3 +1,9 @@ +2018-02-08 Igor Tsimbalist + + PR target/84239 + * config/i386/shadow-stack-unwind.hi (_Unwind_Frames_Extra): + Use new _get_ssp and _inc_ssp intrinsics. + 2018-02-02 Julia Koval * config/i386/cpuinfo.h (processor_subtypes): Add INTEL_COREI7_ICELAKE. diff --git a/libgcc/config/i386/shadow-stack-unwind.h b/libgcc/config/i386/shadow-stack-unwind.h index ef75d97aa2f..416e061dd46 100644 --- a/libgcc/config/i386/shadow-stack-unwind.h +++ b/libgcc/config/i386/shadow-stack-unwind.h @@ -22,30 +22,23 @@ a copy of the GCC Runtime Library Exception along with this program; see the files COPYING3 and COPYING.RUNTIME respectively. If not, see . */ -#ifdef __x86_64__ -# define incssp(x) __builtin_ia32_incsspq ((x)) -# define rdssp(x) __builtin_ia32_rdsspq (x) -#else -# define incssp(x) __builtin_ia32_incsspd ((x)) -# define rdssp(x) __builtin_ia32_rdsspd (x) -#endif +#include /* Unwind the shadow stack for EH. */ #undef _Unwind_Frames_Extra #define _Unwind_Frames_Extra(x) \ do \ { \ - unsigned long ssp = 0; \ - ssp = rdssp (ssp); \ + _Unwind_Word ssp = _get_ssp (); \ if (ssp != 0) \ { \ - unsigned long tmp = (x); \ + _Unwind_Word tmp = (x); \ while (tmp > 255) \ { \ - incssp (tmp); \ + _inc_ssp (tmp); \ tmp -= 255; \ } \ - incssp (tmp); \ + _inc_ssp (tmp); \ } \ } \ while (0) -- cgit v1.2.1 From 1b5cf0070094ad436b83bebc43d04c13df5362c4 Mon Sep 17 00:00:00 2001 From: willschm Date: Wed, 14 Feb 2018 15:32:02 +0000 Subject: [gcc] 2018-02-14 Will Schmidt PR target/84220 * config/rs6000/rs6000-c.c: Update definitions for ALTIVEC_BUILTIN_VEC_SLD, ALTIVEC_BUILTIN_VEC_SLDW, ALTIVEC_BUILTIN_VEC_XXPERMDI builtins. [testsuite] 2018-02-14 Will Schmidt PR target/84220 * gcc.target/powerpc/pr84220-sld.c: New test. * gcc.target/powerpc/pr84220-sld2.c: New test. * gcc.target/powerpc/pr84220-sldw.c: New test. * gcc.target/powerpc/pr84220-xxperm.c: New test. * gcc.target/powerpc/pr84220-xxsld.c: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@257662 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 7 + gcc/config/rs6000/rs6000-c.c | 88 +++++++------ gcc/testsuite/ChangeLog | 9 ++ gcc/testsuite/gcc.target/powerpc/pr84220-sld.c | 97 ++++++++++++++ gcc/testsuite/gcc.target/powerpc/pr84220-sld2.c | 41 ++++++ gcc/testsuite/gcc.target/powerpc/pr84220-sldw.c | 80 ++++++++++++ gcc/testsuite/gcc.target/powerpc/pr84220-xxperm.c | 100 ++++++++++++++ gcc/testsuite/gcc.target/powerpc/pr84220-xxsld.c | 151 ++++++++++++++++++++++ 8 files changed, 530 insertions(+), 43 deletions(-) create mode 100644 gcc/testsuite/gcc.target/powerpc/pr84220-sld.c create mode 100644 gcc/testsuite/gcc.target/powerpc/pr84220-sld2.c create mode 100644 gcc/testsuite/gcc.target/powerpc/pr84220-sldw.c create mode 100644 gcc/testsuite/gcc.target/powerpc/pr84220-xxperm.c create mode 100644 gcc/testsuite/gcc.target/powerpc/pr84220-xxsld.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index b2bec8b574f..62c78631f01 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2018-02-14 Will Schmidt + + PR target/84220 + * config/rs6000/rs6000-c.c: Update definitions for + ALTIVEC_BUILTIN_VEC_SLD, ALTIVEC_BUILTIN_VEC_SLDW, + VEC_XXSLDWI and ALTIVEC_BUILTIN_VEC_XXPERMDI builtins. + 2018-02-14 Igor Tsimbalist PR target/84239 diff --git a/gcc/config/rs6000/rs6000-c.c b/gcc/config/rs6000/rs6000-c.c index a68be511c40..843a3750b82 100644 --- a/gcc/config/rs6000/rs6000-c.c +++ b/gcc/config/rs6000/rs6000-c.c @@ -3656,60 +3656,61 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = { { ALTIVEC_BUILTIN_VEC_SEL, ALTIVEC_BUILTIN_VSEL_16QI, RS6000_BTI_bool_V16QI, RS6000_BTI_bool_V16QI, RS6000_BTI_bool_V16QI, RS6000_BTI_unsigned_V16QI }, { ALTIVEC_BUILTIN_VEC_SLD, ALTIVEC_BUILTIN_VSLDOI_4SF, - RS6000_BTI_V4SF, RS6000_BTI_V4SF, RS6000_BTI_V4SF, RS6000_BTI_NOT_OPAQUE }, + RS6000_BTI_V4SF, RS6000_BTI_V4SF, RS6000_BTI_V4SF, RS6000_BTI_INTSI }, { ALTIVEC_BUILTIN_VEC_SLD, ALTIVEC_BUILTIN_VSLDOI_4SI, - RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_NOT_OPAQUE }, + RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_INTSI }, { ALTIVEC_BUILTIN_VEC_SLD, ALTIVEC_BUILTIN_VSLDOI_4SI, - RS6000_BTI_bool_V4SI, RS6000_BTI_bool_V4SI, RS6000_BTI_bool_V4SI, RS6000_BTI_NOT_OPAQUE }, + RS6000_BTI_bool_V4SI, RS6000_BTI_bool_V4SI, RS6000_BTI_bool_V4SI, RS6000_BTI_INTSI }, { ALTIVEC_BUILTIN_VEC_SLD, ALTIVEC_BUILTIN_VSLDOI_4SI, - RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_NOT_OPAQUE }, + RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_INTSI }, { ALTIVEC_BUILTIN_VEC_SLD, ALTIVEC_BUILTIN_VSLDOI_8HI, - RS6000_BTI_V8HI, RS6000_BTI_V8HI, RS6000_BTI_V8HI, RS6000_BTI_NOT_OPAQUE }, + RS6000_BTI_V8HI, RS6000_BTI_V8HI, RS6000_BTI_V8HI, RS6000_BTI_INTSI }, { ALTIVEC_BUILTIN_VEC_SLD, ALTIVEC_BUILTIN_VSLDOI_8HI, - RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, RS6000_BTI_NOT_OPAQUE }, + RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, RS6000_BTI_INTSI }, { ALTIVEC_BUILTIN_VEC_SLD, ALTIVEC_BUILTIN_VSLDOI_8HI, - RS6000_BTI_bool_V8HI, RS6000_BTI_bool_V8HI, RS6000_BTI_bool_V8HI, RS6000_BTI_NOT_OPAQUE }, + RS6000_BTI_bool_V8HI, RS6000_BTI_bool_V8HI, RS6000_BTI_bool_V8HI, RS6000_BTI_INTSI }, { ALTIVEC_BUILTIN_VEC_SLD, ALTIVEC_BUILTIN_VSLDOI_8HI, - RS6000_BTI_pixel_V8HI, RS6000_BTI_pixel_V8HI, RS6000_BTI_pixel_V8HI, RS6000_BTI_NOT_OPAQUE }, + RS6000_BTI_pixel_V8HI, RS6000_BTI_pixel_V8HI, RS6000_BTI_pixel_V8HI, RS6000_BTI_INTSI }, { ALTIVEC_BUILTIN_VEC_SLD, ALTIVEC_BUILTIN_VSLDOI_16QI, - RS6000_BTI_V16QI, RS6000_BTI_V16QI, RS6000_BTI_V16QI, RS6000_BTI_NOT_OPAQUE }, + RS6000_BTI_V16QI, RS6000_BTI_V16QI, RS6000_BTI_V16QI, RS6000_BTI_INTSI }, { ALTIVEC_BUILTIN_VEC_SLD, ALTIVEC_BUILTIN_VSLDOI_16QI, - RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_NOT_OPAQUE }, + RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_INTSI }, { ALTIVEC_BUILTIN_VEC_SLD, ALTIVEC_BUILTIN_VSLDOI_16QI, - RS6000_BTI_bool_V16QI, RS6000_BTI_bool_V16QI, RS6000_BTI_bool_V16QI, RS6000_BTI_NOT_OPAQUE }, + RS6000_BTI_bool_V16QI, RS6000_BTI_bool_V16QI, RS6000_BTI_bool_V16QI, RS6000_BTI_INTSI }, { ALTIVEC_BUILTIN_VEC_SLD, ALTIVEC_BUILTIN_VSLDOI_2DF, - RS6000_BTI_V2DF, RS6000_BTI_V2DF, RS6000_BTI_V2DF, RS6000_BTI_NOT_OPAQUE }, + RS6000_BTI_V2DF, RS6000_BTI_V2DF, RS6000_BTI_V2DF, RS6000_BTI_INTSI }, { ALTIVEC_BUILTIN_VEC_SLD, ALTIVEC_BUILTIN_VSLDOI_2DI, - RS6000_BTI_bool_V2DI, RS6000_BTI_bool_V2DI, RS6000_BTI_bool_V2DI, RS6000_BTI_NOT_OPAQUE }, + RS6000_BTI_bool_V2DI, RS6000_BTI_bool_V2DI, RS6000_BTI_bool_V2DI, RS6000_BTI_INTSI }, { ALTIVEC_BUILTIN_VEC_SLD, ALTIVEC_BUILTIN_VSLDOI_2DI, - RS6000_BTI_V2DI, RS6000_BTI_V2DI, RS6000_BTI_V2DI, RS6000_BTI_NOT_OPAQUE }, + RS6000_BTI_V2DI, RS6000_BTI_V2DI, RS6000_BTI_V2DI, RS6000_BTI_INTSI }, { ALTIVEC_BUILTIN_VEC_SLD, ALTIVEC_BUILTIN_VSLDOI_2DI, - RS6000_BTI_unsigned_V2DI, RS6000_BTI_unsigned_V2DI, RS6000_BTI_unsigned_V2DI, RS6000_BTI_NOT_OPAQUE }, + RS6000_BTI_unsigned_V2DI, RS6000_BTI_unsigned_V2DI, RS6000_BTI_unsigned_V2DI, RS6000_BTI_INTSI }, { ALTIVEC_BUILTIN_VEC_SLDW, VSX_BUILTIN_XXSLDWI_16QI, RS6000_BTI_V16QI, RS6000_BTI_V16QI, RS6000_BTI_V16QI, - RS6000_BTI_NOT_OPAQUE }, + RS6000_BTI_INTSI }, { ALTIVEC_BUILTIN_VEC_SLDW, VSX_BUILTIN_XXSLDWI_16QI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, - RS6000_BTI_unsigned_V16QI, RS6000_BTI_NOT_OPAQUE }, + RS6000_BTI_unsigned_V16QI, RS6000_BTI_INTSI }, { ALTIVEC_BUILTIN_VEC_SLDW, VSX_BUILTIN_XXSLDWI_8HI, RS6000_BTI_V8HI, RS6000_BTI_V8HI, RS6000_BTI_V8HI, - RS6000_BTI_NOT_OPAQUE }, + RS6000_BTI_INTSI }, { ALTIVEC_BUILTIN_VEC_SLDW, VSX_BUILTIN_XXSLDWI_8HI, RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, - RS6000_BTI_unsigned_V8HI, RS6000_BTI_NOT_OPAQUE }, + RS6000_BTI_unsigned_V8HI, RS6000_BTI_INTSI }, { ALTIVEC_BUILTIN_VEC_SLDW, VSX_BUILTIN_XXSLDWI_4SI, RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_V4SI, - RS6000_BTI_NOT_OPAQUE }, + RS6000_BTI_INTSI }, { ALTIVEC_BUILTIN_VEC_SLDW, VSX_BUILTIN_XXSLDWI_4SI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, - RS6000_BTI_unsigned_V4SI, RS6000_BTI_NOT_OPAQUE }, + RS6000_BTI_unsigned_V4SI, RS6000_BTI_INTSI }, { ALTIVEC_BUILTIN_VEC_SLDW, VSX_BUILTIN_XXSLDWI_2DI, RS6000_BTI_V2DI, RS6000_BTI_V2DI, RS6000_BTI_V2DI, - RS6000_BTI_NOT_OPAQUE }, + RS6000_BTI_INTSI }, { ALTIVEC_BUILTIN_VEC_SLDW, VSX_BUILTIN_XXSLDWI_2DI, RS6000_BTI_unsigned_V2DI, RS6000_BTI_unsigned_V2DI, - RS6000_BTI_unsigned_V2DI, RS6000_BTI_NOT_OPAQUE }, + RS6000_BTI_unsigned_V2DI, RS6000_BTI_INTSI }, + { ALTIVEC_BUILTIN_VEC_ST, ALTIVEC_BUILTIN_STVX_V2DF, RS6000_BTI_void, RS6000_BTI_V2DF, RS6000_BTI_INTSI, ~RS6000_BTI_V2DF }, { ALTIVEC_BUILTIN_VEC_ST, ALTIVEC_BUILTIN_STVX_V2DI, @@ -4154,53 +4155,54 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = { RS6000_BTI_void, RS6000_BTI_unsigned_V16QI, RS6000_BTI_INTSI, ~RS6000_BTI_UINTQI }, { VSX_BUILTIN_VEC_XXSLDWI, VSX_BUILTIN_XXSLDWI_16QI, - RS6000_BTI_V16QI, RS6000_BTI_V16QI, RS6000_BTI_V16QI, RS6000_BTI_NOT_OPAQUE }, + RS6000_BTI_V16QI, RS6000_BTI_V16QI, RS6000_BTI_V16QI, RS6000_BTI_INTSI }, { VSX_BUILTIN_VEC_XXSLDWI, VSX_BUILTIN_XXSLDWI_16QI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, - RS6000_BTI_NOT_OPAQUE }, + RS6000_BTI_INTSI }, { VSX_BUILTIN_VEC_XXSLDWI, VSX_BUILTIN_XXSLDWI_8HI, - RS6000_BTI_V8HI, RS6000_BTI_V8HI, RS6000_BTI_V8HI, RS6000_BTI_NOT_OPAQUE }, + RS6000_BTI_V8HI, RS6000_BTI_V8HI, RS6000_BTI_V8HI, RS6000_BTI_INTSI }, { VSX_BUILTIN_VEC_XXSLDWI, VSX_BUILTIN_XXSLDWI_8HI, RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, - RS6000_BTI_NOT_OPAQUE }, + RS6000_BTI_INTSI }, { VSX_BUILTIN_VEC_XXSLDWI, VSX_BUILTIN_XXSLDWI_4SI, - RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_NOT_OPAQUE }, + RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_INTSI }, { VSX_BUILTIN_VEC_XXSLDWI, VSX_BUILTIN_XXSLDWI_4SI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, - RS6000_BTI_NOT_OPAQUE }, + RS6000_BTI_INTSI }, { VSX_BUILTIN_VEC_XXSLDWI, VSX_BUILTIN_XXSLDWI_2DI, - RS6000_BTI_V2DI, RS6000_BTI_V2DI, RS6000_BTI_V2DI, RS6000_BTI_NOT_OPAQUE }, + RS6000_BTI_V2DI, RS6000_BTI_V2DI, RS6000_BTI_V2DI, RS6000_BTI_INTSI }, { VSX_BUILTIN_VEC_XXSLDWI, VSX_BUILTIN_XXSLDWI_2DI, RS6000_BTI_unsigned_V2DI, RS6000_BTI_unsigned_V2DI, RS6000_BTI_unsigned_V2DI, - RS6000_BTI_NOT_OPAQUE }, + RS6000_BTI_INTSI }, { VSX_BUILTIN_VEC_XXSLDWI, VSX_BUILTIN_XXSLDWI_4SF, - RS6000_BTI_V4SF, RS6000_BTI_V4SF, RS6000_BTI_V4SF, RS6000_BTI_NOT_OPAQUE }, + RS6000_BTI_V4SF, RS6000_BTI_V4SF, RS6000_BTI_V4SF, RS6000_BTI_INTSI }, { VSX_BUILTIN_VEC_XXSLDWI, VSX_BUILTIN_XXSLDWI_2DF, - RS6000_BTI_V2DF, RS6000_BTI_V2DF, RS6000_BTI_V2DF, RS6000_BTI_NOT_OPAQUE }, + RS6000_BTI_V2DF, RS6000_BTI_V2DF, RS6000_BTI_V2DF, RS6000_BTI_INTSI }, + { VSX_BUILTIN_VEC_XXPERMDI, VSX_BUILTIN_XXPERMDI_2DF, - RS6000_BTI_V2DF, RS6000_BTI_V2DF, RS6000_BTI_V2DF, RS6000_BTI_NOT_OPAQUE }, + RS6000_BTI_V2DF, RS6000_BTI_V2DF, RS6000_BTI_V2DF, RS6000_BTI_INTSI }, { VSX_BUILTIN_VEC_XXPERMDI, VSX_BUILTIN_XXPERMDI_2DI, - RS6000_BTI_V2DI, RS6000_BTI_V2DI, RS6000_BTI_V2DI, RS6000_BTI_NOT_OPAQUE }, + RS6000_BTI_V2DI, RS6000_BTI_V2DI, RS6000_BTI_V2DI, RS6000_BTI_INTSI }, { VSX_BUILTIN_VEC_XXPERMDI, VSX_BUILTIN_XXPERMDI_2DI, RS6000_BTI_unsigned_V2DI, RS6000_BTI_unsigned_V2DI, RS6000_BTI_unsigned_V2DI, - RS6000_BTI_NOT_OPAQUE }, + RS6000_BTI_INTSI }, { VSX_BUILTIN_VEC_XXPERMDI, VSX_BUILTIN_XXPERMDI_4SF, - RS6000_BTI_V4SF, RS6000_BTI_V4SF, RS6000_BTI_V4SF, RS6000_BTI_NOT_OPAQUE }, + RS6000_BTI_V4SF, RS6000_BTI_V4SF, RS6000_BTI_V4SF, RS6000_BTI_INTSI }, { VSX_BUILTIN_VEC_XXPERMDI, VSX_BUILTIN_XXPERMDI_4SI, - RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_NOT_OPAQUE }, + RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_INTSI }, { VSX_BUILTIN_VEC_XXPERMDI, VSX_BUILTIN_XXPERMDI_4SI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, - RS6000_BTI_NOT_OPAQUE }, + RS6000_BTI_INTSI }, { VSX_BUILTIN_VEC_XXPERMDI, VSX_BUILTIN_XXPERMDI_8HI, - RS6000_BTI_V8HI, RS6000_BTI_V8HI, RS6000_BTI_V8HI, RS6000_BTI_NOT_OPAQUE }, + RS6000_BTI_V8HI, RS6000_BTI_V8HI, RS6000_BTI_V8HI, RS6000_BTI_INTSI }, { VSX_BUILTIN_VEC_XXPERMDI, VSX_BUILTIN_XXPERMDI_8HI, RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, - RS6000_BTI_NOT_OPAQUE }, + RS6000_BTI_INTSI }, { VSX_BUILTIN_VEC_XXPERMDI, VSX_BUILTIN_XXPERMDI_16QI, - RS6000_BTI_V16QI, RS6000_BTI_V16QI, RS6000_BTI_V16QI, RS6000_BTI_NOT_OPAQUE }, + RS6000_BTI_V16QI, RS6000_BTI_V16QI, RS6000_BTI_V16QI, RS6000_BTI_INTSI }, { VSX_BUILTIN_VEC_XXPERMDI, VSX_BUILTIN_XXPERMDI_16QI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, - RS6000_BTI_NOT_OPAQUE }, + RS6000_BTI_INTSI }, { VSX_BUILTIN_VEC_LD, VSX_BUILTIN_LXVD2X_V2DF, RS6000_BTI_V2DF, RS6000_BTI_INTSI, ~RS6000_BTI_V2DF, 0 }, diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 51aeba332d3..f54dde8cb12 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,12 @@ +2018-02-14 Will Schmidt + + PR target/84220 + * gcc.target/powerpc/pr84220-sld.c: New test. + * gcc.target/powerpc/pr84220-sld2.c: New test. + * gcc.target/powerpc/pr84220-sldw.c: New test. + * gcc.target/powerpc/pr84220-xxperm.c: New test. + * gcc.target/powerpc/pr84220-xxsld.c: New test. + 2018-02-14 Igor Tsimbalist PR target/84239 diff --git a/gcc/testsuite/gcc.target/powerpc/pr84220-sld.c b/gcc/testsuite/gcc.target/powerpc/pr84220-sld.c new file mode 100644 index 00000000000..2536fc30b98 --- /dev/null +++ b/gcc/testsuite/gcc.target/powerpc/pr84220-sld.c @@ -0,0 +1,97 @@ +/* PR target/84220 */ +/* Test to ensure we generate invalid parameter errors rather than an ICE + when calling builtin_vec_sld() with invalid parameters. */ +/* { dg-do compile } */ +/* { dg-require-effective-target powerpc_altivec_ok } */ +/* { dg-options "-maltivec" } */ + +#include + +typedef vector bool char vbc_t; +typedef vector signed char vsc_t; +typedef vector unsigned char vuc_t; +typedef vector bool int vbi_t; +typedef vector signed int vsi_t; +typedef vector unsigned int vui_t; +typedef vector pixel vp_t; +typedef vector bool short vbs_t; +typedef vector signed short vss_t; +typedef vector unsigned short vus_t; +typedef vector float vf_t; + +void +test_vbc ( vbc_t v1, vbc_t v2, vbc_t v3 ) \ +{ + __builtin_vec_sld(v1, v2, v3); /* { dg-error "invalid parameter combination for AltiVec intrinsic" } */ + __builtin_vec_sld(v1, v2, 3); +} + +void +test_vsc ( vsc_t v1, vsc_t v2, vsc_t v3 ) \ +{ + __builtin_vec_sld(v1, v2, v3); /* { dg-error "invalid parameter combination for AltiVec intrinsic" } */ + __builtin_vec_sld(v1, v2, 3); +} + +void +test_vuc ( vuc_t v1, vuc_t v2, vuc_t v3 ) \ +{ + __builtin_vec_sld(v1, v2, v3); /* { dg-error "invalid parameter combination for AltiVec intrinsic" } */ + __builtin_vec_sld(v1, v2, 3); +} + +void +test_vbi ( vbi_t v1, vbi_t v2, vbi_t v3 ) \ +{ + __builtin_vec_sld(v1, v2, v3); /* { dg-error "invalid parameter combination for AltiVec intrinsic" } */ + __builtin_vec_sld(v1, v2, 3); +} + +void +test_vsi ( vsi_t v1, vsi_t v2, vsi_t v3 ) \ +{ + __builtin_vec_sld(v1, v2, v3); /* { dg-error "invalid parameter combination for AltiVec intrinsic" } */ + __builtin_vec_sld(v1, v2, 3); +} + +void +test_vui ( vui_t v1, vui_t v2, vui_t v3 ) \ +{ + __builtin_vec_sld(v1, v2, v3); /* { dg-error "invalid parameter combination for AltiVec intrinsic" } */ + __builtin_vec_sld(v1, v2, 3); +} + +void +test_vp ( vp_t v1, vp_t v2, vp_t v3 ) \ +{ + __builtin_vec_sld(v1, v2, v3); /* { dg-error "invalid parameter combination for AltiVec intrinsic" } */ + __builtin_vec_sld(v1, v2, 3); +} + +void +test_vbs ( vbs_t v1, vbs_t v2, vbs_t v3 ) \ +{ + __builtin_vec_sld(v1, v2, v3); /* { dg-error "invalid parameter combination for AltiVec intrinsic" } */ + __builtin_vec_sld(v1, v2, 3); +} + +void +test_vss ( vss_t v1, vss_t v2, vss_t v3 ) \ +{ + __builtin_vec_sld(v1, v2, v3); /* { dg-error "invalid parameter combination for AltiVec intrinsic" } */ + __builtin_vec_sld(v1, v2, 3); +} + +void +test_vus ( vus_t v1, vus_t v2, vus_t v3 ) \ +{ + __builtin_vec_sld(v1, v2, v3); /* { dg-error "invalid parameter combination for AltiVec intrinsic" } */ + __builtin_vec_sld(v1, v2, 3); +} + +void +test_vf ( vf_t v1, vf_t v2, vf_t v3 ) \ +{ + __builtin_vec_sld(v1, v2, v3); /* { dg-error "invalid parameter combination for AltiVec intrinsic" } */ + __builtin_vec_sld(v1, v2, 3); +} diff --git a/gcc/testsuite/gcc.target/powerpc/pr84220-sld2.c b/gcc/testsuite/gcc.target/powerpc/pr84220-sld2.c new file mode 100644 index 00000000000..5e973e01aa4 --- /dev/null +++ b/gcc/testsuite/gcc.target/powerpc/pr84220-sld2.c @@ -0,0 +1,41 @@ +/* PR target/84220 */ +/* Test to ensure we generate invalid parameter errors rather than an ICE + when calling builtin_vec_sld() with invalid parameters. */ +/* { dg-do compile } */ +/* { dg-require-effective-target powerpc_p8vector_ok } */ +/* { dg-options "-maltivec -mpower8-vector" } */ + +#include + +typedef vector bool long long vbl_t; +typedef vector signed long long vsl_t; +typedef vector unsigned long long vul_t; +typedef vector double vd_t; + +void +test_vbl ( vbl_t v1, vbl_t v2, vbl_t v3 ) \ +{ + __builtin_vec_sld(v1, v2, v3); /* { dg-error "invalid parameter combination for AltiVec intrinsic" } */ + __builtin_vec_sld(v1, v2, 3); +} + +void +test_vsl ( vsl_t v1, vsl_t v2, vsl_t v3 ) \ +{ + __builtin_vec_sld(v1, v2, v3); /* { dg-error "invalid parameter combination for AltiVec intrinsic" } */ + __builtin_vec_sld(v1, v2, 3); +} + +void +test_vul ( vul_t v1, vul_t v2, vul_t v3 ) \ +{ + __builtin_vec_sld(v1, v2, v3); /* { dg-error "invalid parameter combination for AltiVec intrinsic" } */ + __builtin_vec_sld(v1, v2, 3); +} + +void +test_vd ( vd_t v1, vd_t v2, vd_t v3 ) \ +{ + __builtin_vec_sld(v1, v2, v3); /* { dg-error "invalid parameter combination for AltiVec intrinsic" } */ + __builtin_vec_sld(v1, v2, 3); +} diff --git a/gcc/testsuite/gcc.target/powerpc/pr84220-sldw.c b/gcc/testsuite/gcc.target/powerpc/pr84220-sldw.c new file mode 100644 index 00000000000..a3b4be6686b --- /dev/null +++ b/gcc/testsuite/gcc.target/powerpc/pr84220-sldw.c @@ -0,0 +1,80 @@ +/* PR target/84220 */ +/* Test to ensure we generate invalid parameter errors rather than an ICE + when calling builtin_vec_sldw() with invalid parameters. */ +/* { dg-do compile } */ +/* { dg-require-effective-target powerpc_vsx_ok } */ +/* { dg-options "-mvsx" } */ + +#include + +typedef vector bool char vbc_t; +typedef vector signed char vsc_t; +typedef vector unsigned char vuc_t; +typedef vector bool int vbi_t; +typedef vector signed int vsi_t; +typedef vector unsigned int vui_t; +typedef vector pixel vp_t; +typedef vector bool short vbs_t; +typedef vector signed short vss_t; +typedef vector unsigned short vus_t; +typedef vector float vf_t; +typedef vector bool long long vbl_t; +typedef vector signed long long vsl_t; +typedef vector unsigned long long vul_t; +typedef vector double vd_t; + +void +test_vsc ( vsc_t v1, vsc_t v2, vsc_t v3 ) \ +{ + vec_sldw(v1, v2, v3); /* { dg-error "invalid parameter combination for AltiVec intrinsic" } */ + vec_sldw(v1, v2, 3); +} + +void +test_vuc ( vuc_t v1, vuc_t v2, vuc_t v3 ) \ +{ + vec_sldw(v1, v2, v3); /* { dg-error "invalid parameter combination for AltiVec intrinsic" } */ + vec_sldw(v1, v2, 3); +} + +void +test_vsi ( vsi_t v1, vsi_t v2, vsi_t v3 ) \ +{ + vec_sldw(v1, v2, v3); /* { dg-error "invalid parameter combination for AltiVec intrinsic" } */ + vec_sldw(v1, v2, 3); +} + +void +test_vui ( vui_t v1, vui_t v2, vui_t v3 ) \ +{ + vec_sldw(v1, v2, v3); /* { dg-error "invalid parameter combination for AltiVec intrinsic" } */ + vec_sldw(v1, v2, 3); +} + +void +test_vsl ( vsl_t v1, vsl_t v2, vsl_t v3 ) \ +{ + vec_sldw(v1, v2, v3); /* { dg-error "invalid parameter combination for AltiVec intrinsic" } */ + vec_sldw(v1, v2, 3); +} + +void +test_vul ( vul_t v1, vul_t v2, vul_t v3 ) \ +{ + vec_sldw(v1, v2, v3); /* { dg-error "invalid parameter combination for AltiVec intrinsic" } */ + vec_sldw(v1, v2, 3); +} + +void +test_vss ( vss_t v1, vss_t v2, vss_t v3 ) \ +{ + vec_sldw(v1, v2, v3); /* { dg-error "invalid parameter combination for AltiVec intrinsic" } */ + vec_sldw(v1, v2, 3); +} + +void +test_vus ( vus_t v1, vus_t v2, vus_t v3 ) \ +{ + vec_sldw(v1, v2, v3); /* { dg-error "invalid parameter combination for AltiVec intrinsic" } */ + vec_sldw(v1, v2, 3); +} diff --git a/gcc/testsuite/gcc.target/powerpc/pr84220-xxperm.c b/gcc/testsuite/gcc.target/powerpc/pr84220-xxperm.c new file mode 100644 index 00000000000..8a802eb337e --- /dev/null +++ b/gcc/testsuite/gcc.target/powerpc/pr84220-xxperm.c @@ -0,0 +1,100 @@ +/* PR target/84220 */ +/* Test to ensure we generate invalid parameter errors rather than an ICE + when calling vec_xxpermdi() with invalid parameters. */ +/* { dg-do compile } */ +/* { dg-require-effective-target powerpc_vsx_ok } */ +/* { dg-options "-O2 -mvsx" } */ + +#include +void abort (void); + +vector double vdx = { 0.0, 1.0 }; +vector double vdy = { 2.0, 3.0 }; +vector double vdz; + +vector signed long long vsllx = { 0, 1 }; +vector signed long long vslly = { 2, 3 }; +vector signed long long vsllz; + +vector unsigned long long vullx = { 0, 1 }; +vector unsigned long long vully = { 2, 3 }; +vector unsigned long long vullz; + +vector float vfx = { 0.0, 1.0, 2.0, 3.0 }; +vector float vfy = { 4.0, 5.0, 6.0, 7.0 }; +vector float vfz; + +vector signed int vsix = { 0, 1, 2, 3 }; +vector signed int vsiy = { 4, 5, 6, 7 }; +vector signed int vsiz; + +vector unsigned int vuix = { 0, 1, 2, 3 }; +vector unsigned int vuiy = { 4, 5, 6, 7 }; +vector unsigned int vuiz; + +vector signed short vssx = { 0, 1, 2, 3, 4, 5, 6, 7 }; +vector signed short vssy = { 8, 9, 10, 11, 12, 13, 14, 15 }; +vector signed short vssz; + +vector unsigned short vusx = { 0, 1, 2, 3, 4, 5, 6, 7 }; +vector unsigned short vusy = { 8, 9, 10, 11, 12, 13, 14, 15 }; +vector unsigned short vusz; + +vector signed char vscx = { 0, 1, 2, 3, 4, 5, 6, 7, + 8, 9, 10, 11, 12, 13, 14, 15 }; +vector signed char vscy = { 16, 17, 18, 19, 20, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31 }; +vector signed char vscz; + +vector unsigned char vucx = { 0, 1, 2, 3, 4, 5, 6, 7, + 8, 9, 10, 11, 12, 13, 14, 15 }; +vector unsigned char vucy = { 16, 17, 18, 19, 20, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31 }; +vector unsigned char vucz; + +int +main () +{ + vdz = vec_xxpermdi (vdx, vdy, 0b01); + if (vdz[0] != 0.0 || vdz[1] != 3.0) + abort (); + vdz = vec_xxpermdi (vdx, vdy, vscx); /* { dg-error "invalid parameter combination for AltiVec intrinsic" } */ + vsllz = vec_xxpermdi (vsllx, vslly, 0b10); + vsllz = vec_xxpermdi (vsllx, vslly, vslly); /* { dg-error "invalid parameter combination for AltiVec intrinsic" } */ + vullz = vec_xxpermdi (vullx, vully, 0b10); + vullz = vec_xxpermdi (vullx, vully, vully); /* { dg-error "invalid parameter combination for AltiVec intrinsic" } */ + if (vsllz[0] != 1 || vsllz[1] != 2) + abort (); + + vfz = vec_xxpermdi (vfx, vfy, 0b01); + vfz = vec_xxpermdi (vfx, vfy, vfy); /* { dg-error "invalid parameter combination for AltiVec intrinsic" } */ + if (vfz[0] != 0.0 || vfz[1] != 1.0 || vfz[2] != 6.0 || vfz[3] != 7.0) + abort (); + + vsiz = vec_xxpermdi (vsix, vsiy, 0b10); + vsiz = vec_xxpermdi (vsix, vsiy, vsiy); /* { dg-error "invalid parameter combination for AltiVec intrinsic" } */ + vuiz = vec_xxpermdi (vuix, vuiy, 0b10); + vuiz = vec_xxpermdi (vuix, vuiy, vuiy); /* { dg-error "invalid parameter combination for AltiVec intrinsic" } */ + if (vsiz[0] != 2 || vsiz[1] != 3 || vsiz[2] != 4 || vsiz[3] != 5) + abort (); + + vssz = vec_xxpermdi (vssx, vssy, 0b00); + vssz = vec_xxpermdi (vssx, vssy, vssy); /* { dg-error "invalid parameter combination for AltiVec intrinsic" } */ + vusz = vec_xxpermdi (vusx, vusy, 0b00); + vusz = vec_xxpermdi (vusx, vusy, vusy); /* { dg-error "invalid parameter combination for AltiVec intrinsic" } */ + if (vssz[0] != 0 || vssz[1] != 1 || vssz[2] != 2 || vssz[3] != 3 + || vssz[4] != 8 || vssz[5] != 9 || vssz[6] != 10 || vssz[7] != 11) + abort (); + + vscz = vec_xxpermdi (vscx, vscy, 0b11); + vscz = vec_xxpermdi (vscx, vscy, vscy);/* { dg-error "invalid parameter combination for AltiVec intrinsic" } */ + vucz = vec_xxpermdi (vucx, vucy, 0b11); + vucz = vec_xxpermdi (vucx, vucy, vucy);/* { dg-error "invalid parameter combination for AltiVec intrinsic" } */ + if (vscz[0] != 8 || vscz[1] != 9 || vscz[2] != 10 || vscz[3] != 11 + || vscz[4] != 12 || vscz[5] != 13 || vscz[6] != 14 || vscz[7] != 15 + || vscz[8] != 24 || vscz[9] != 25 || vscz[10] != 26 || vscz[11] != 27 + || vscz[12] != 28 || vscz[13] != 29 || vscz[14] != 30 || vscz[15] != 31) + abort (); + + return 0; +} diff --git a/gcc/testsuite/gcc.target/powerpc/pr84220-xxsld.c b/gcc/testsuite/gcc.target/powerpc/pr84220-xxsld.c new file mode 100644 index 00000000000..06e485dc45c --- /dev/null +++ b/gcc/testsuite/gcc.target/powerpc/pr84220-xxsld.c @@ -0,0 +1,151 @@ +/* PR target/84220 */ +/* Test to ensure we generate invalid parameter errors rather than an ICE + when calling vec_xxsldwi() and vec_xxpermdi() with invalid parameters. */ +/* { dg-do compile { target { powerpc*-*-* } } } */ +/* { dg-skip-if "" { powerpc*-*-darwin* } } */ +/* { dg-require-effective-target powerpc_vsx_ok } */ +/* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power7" } } */ +/* { dg-options "-O3 -mcpu=power7" } */ + +#include + +vector double +v2df_shift (vector double a, vector double b) +{ + return vec_xxsldwi (a, b, b); /* { dg-error "invalid parameter combination for AltiVec intrinsic" } */ + return vec_xxsldwi (a, b, 1); +} + +vector float +v4sf_shift (vector float a, vector float b) +{ + return vec_xxsldwi (a, b, b); /* { dg-error "invalid parameter combination for AltiVec intrinsic" } */ + return vec_xxsldwi (a, b, 1); +} + +vector long long +v2di_shift (vector long long a, vector long long b) +{ + return vec_xxsldwi (a, b, b); /* { dg-error "invalid parameter combination for AltiVec intrinsic" } */ + return vec_xxsldwi (a, b, 1); +} + +vector unsigned long long +v2diu_shift (vector unsigned long long a, vector unsigned long long b) +{ + return vec_xxsldwi (a, b, b); /* { dg-error "invalid parameter combination for AltiVec intrinsic" } */ + return vec_xxsldwi (a, b, 1); +} + +vector int +v4si_shift (vector int a, vector int b) +{ + return vec_xxsldwi (a, b, b); /* { dg-error "invalid parameter combination for AltiVec intrinsic" } */ + return vec_xxsldwi (a, b, 1); +} + +vector unsigned int +v4siu_shift (vector unsigned int a, vector unsigned int b) +{ + return vec_xxsldwi (a, b, b); /* { dg-error "invalid parameter combination for AltiVec intrinsic" } */ + return vec_xxsldwi (a, b, 1); +} + +vector short +v8hi_shift (vector short a, vector short b) +{ + return vec_xxsldwi (a, b, b); /* { dg-error "invalid parameter combination for AltiVec intrinsic" } */ + return vec_xxsldwi (a, b, 1); +} + +vector unsigned short +v8hiu_shift (vector unsigned short a, vector unsigned short b) +{ + return vec_xxsldwi (a, b, b); /* { dg-error "invalid parameter combination for AltiVec intrinsic" } */ + return vec_xxsldwi (a, b, 1); +} + +vector signed char +v16qi_shift (vector signed char a, vector signed char b) +{ + return vec_xxsldwi (a, b, b); /* { dg-error "invalid parameter combination for AltiVec intrinsic" } */ + return vec_xxsldwi (a, b, 1); +} + +vector unsigned char +v16qiu_shift (vector unsigned char a, vector unsigned char b) +{ + return vec_xxsldwi (a, b, b); /* { dg-error "invalid parameter combination for AltiVec intrinsic" } */ + return vec_xxsldwi (a, b, 1); +} + +vector double +v2df_permute (vector double a, vector double b) +{ + return vec_xxpermdi (a, b, b); /* { dg-error "invalid parameter combination for AltiVec intrinsic" } */ + return vec_xxpermdi (a, b, 1); +} + +vector float +v4sf_permute (vector float a, vector float b) +{ + return vec_xxpermdi (a, b, b); /* { dg-error "invalid parameter combination for AltiVec intrinsic" } */ + return vec_xxpermdi (a, b, 1); +} + +vector long long +v2di_permute (vector long long a, vector long long b) +{ + return vec_xxpermdi (a, b, b); /* { dg-error "invalid parameter combination for AltiVec intrinsic" } */ + return vec_xxpermdi (a, b, 1); +} + +vector unsigned long long +v2diu_permute (vector unsigned long long a, vector unsigned long long b) +{ + return vec_xxpermdi (a, b, b); /* { dg-error "invalid parameter combination for AltiVec intrinsic" } */ + return vec_xxpermdi (a, b, 1); +} + +vector int +v4si_permute (vector int a, vector int b) +{ + return vec_xxpermdi (a, b, b); /* { dg-error "invalid parameter combination for AltiVec intrinsic" } */ + return vec_xxpermdi (a, b, 1); +} + +vector unsigned int +v4siu_permute (vector unsigned int a, vector unsigned int b) +{ + return vec_xxpermdi (a, b, b); /* { dg-error "invalid parameter combination for AltiVec intrinsic" } */ + return vec_xxpermdi (a, b, 1); +} + +vector short +v8hi_permute (vector short a, vector short b) +{ + return vec_xxpermdi (a, b, b); /* { dg-error "invalid parameter combination for AltiVec intrinsic" } */ +; + return vec_xxpermdi (a, b, 1); +} + +vector unsigned short +v8hiu_permute (vector unsigned short a, vector unsigned short b) +{ + return vec_xxpermdi (a, b, b); /* { dg-error "invalid parameter combination for AltiVec intrinsic" } */ + return vec_xxpermdi (a, b, 1); +} + +vector signed char +v16qi_permute (vector signed char a, vector signed char b) +{ + return vec_xxpermdi (a, b, b); /* { dg-error "invalid parameter combination for AltiVec intrinsic" } */ + return vec_xxpermdi (a, b, 1); +} + +vector unsigned char +v16qiu_permute (vector unsigned char a, vector unsigned char b) +{ + return vec_xxpermdi (a, b, b); /* { dg-error "invalid parameter combination for AltiVec intrinsic" } */ + return vec_xxpermdi (a, b, 1); +} -- cgit v1.2.1 From 37056c5c4abaf0bee6785d9b0c3790e2f7b9a627 Mon Sep 17 00:00:00 2001 From: willschm Date: Wed, 14 Feb 2018 15:47:54 +0000 Subject: [testsuite] 2018-02-14 Will Schmidt * gcc.target/powerpc/altivec-consts.c: Update compile stanzas. * gcc.target/powerpc/le-altivec-consts.c: Same. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@257664 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/gcc.target/powerpc/altivec-consts.c | 4 ++-- gcc/testsuite/gcc.target/powerpc/le-altivec-consts.c | 4 ++-- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index f54dde8cb12..0f08e15e2ac 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2018-02-14 Will Schmidt + + * gcc.target/powerpc/altivec-consts.c: Update compile stanzas. + * gcc.target/powerpc/le-altivec-consts.c: Same. + 2018-02-14 Will Schmidt PR target/84220 diff --git a/gcc/testsuite/gcc.target/powerpc/altivec-consts.c b/gcc/testsuite/gcc.target/powerpc/altivec-consts.c index 36cb60c32b7..d59f9b4cf1c 100644 --- a/gcc/testsuite/gcc.target/powerpc/altivec-consts.c +++ b/gcc/testsuite/gcc.target/powerpc/altivec-consts.c @@ -1,5 +1,5 @@ -/* { dg-do run { target { powerpc*-*-* && vmx_hw } } } */ -/* { dg-do compile { target { powerpc*-*-* && { ! vmx_hw } } } } */ +/* { dg-do run { target vmx_hw } } */ +/* { dg-do compile } */ /* { dg-require-effective-target powerpc_altivec_ok } */ /* { dg-options "-maltivec -mabi=altivec -O2" } */ diff --git a/gcc/testsuite/gcc.target/powerpc/le-altivec-consts.c b/gcc/testsuite/gcc.target/powerpc/le-altivec-consts.c index 15ec650c786..f48ef44e676 100644 --- a/gcc/testsuite/gcc.target/powerpc/le-altivec-consts.c +++ b/gcc/testsuite/gcc.target/powerpc/le-altivec-consts.c @@ -1,5 +1,5 @@ -/* { dg-do run { target { powerpc*-*-* && vmx_hw } } } */ -/* { dg-do compile { target { powerpc*-*-* && { ! vmx_hw } } } } */ +/* { dg-do run { target vmx_hw } } */ +/* { dg-do compile } */ /* { dg-require-effective-target powerpc_altivec_ok } */ /* { dg-options "-maltivec -mabi=altivec -O2" } */ -- cgit v1.2.1 From e2f46fbf9005861b21c93f6d48cf7713f7f3c0c8 Mon Sep 17 00:00:00 2001 From: nathan Date: Wed, 14 Feb 2018 16:31:26 +0000 Subject: [C++ PATCH]: instantiation via vtable marking https://gcc.gnu.org/ml/gcc-patches/2018-02/msg00850.html gcc/cp/ * decl2.c (mark_vtable_entries): Set input_location to decl's. (c_parse_final_cleanups): Restore input_location after emitting vtables. gcc/testsuite/ * g++.dg/template/instantiate5.C: Adjust required-from loc. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@257665 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/cp/ChangeLog | 6 ++++++ gcc/cp/decl2.c | 8 ++++++++ gcc/testsuite/ChangeLog | 4 ++++ gcc/testsuite/g++.dg/template/instantiate5.C | 9 +++++++-- 4 files changed, 25 insertions(+), 2 deletions(-) diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 4955bf9e1a0..673d6e32453 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,9 @@ +2018-02-14 Nathan Sidwell + + * decl2.c (mark_vtable_entries): Set input_location to decl's. + (c_parse_final_cleanups): Restore input_location after emitting + vtables. + 2018-02-14 Paolo Carlini * cp-tree.h (do_auto_deduction (tree, tree, tree)): Remove. diff --git a/gcc/cp/decl2.c b/gcc/cp/decl2.c index 2da6f9023c5..d2693ce458b 100644 --- a/gcc/cp/decl2.c +++ b/gcc/cp/decl2.c @@ -1825,6 +1825,11 @@ mark_vtable_entries (tree decl) function, so we emit the thunks there instead. */ if (DECL_THUNK_P (fn)) use_thunk (fn, /*emit_p=*/0); + /* Set the location, as marking the function could cause + instantiation. We do not need to preserve the incoming + location, as we're called from c_parse_final_cleanups, which + takes care of that. */ + input_location = DECL_SOURCE_LOCATION (fn); mark_used (fn); } } @@ -4727,6 +4732,9 @@ c_parse_final_cleanups (void) reconsider = true; keyed_classes->unordered_remove (i); } + /* The input_location may have been changed during marking of + vtable entries. */ + input_location = locus_at_end_of_parsing; /* Write out needed type info variables. We have to be careful looping through unemitted decls, because emit_tinfo_decl may diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 0f08e15e2ac..4fb11dfa011 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2018-02-14 Nathan Sidwell + + * g++.dg/template/instantiate5.C: Adjust required-from loc. + 2018-02-14 Will Schmidt * gcc.target/powerpc/altivec-consts.c: Update compile stanzas. diff --git a/gcc/testsuite/g++.dg/template/instantiate5.C b/gcc/testsuite/g++.dg/template/instantiate5.C index 896313d14d5..d64092eb1a8 100644 --- a/gcc/testsuite/g++.dg/template/instantiate5.C +++ b/gcc/testsuite/g++.dg/template/instantiate5.C @@ -18,7 +18,12 @@ struct B template struct C { - virtual void bar() const { T::foo(); } // { dg-error "no matching function" } + virtual void bar() const // { dg-message "required" } + { + T::foo(); // { dg-error "no matching function" } + } }; -C c; // { dg-message "required" } +C c; + +int k; -- cgit v1.2.1 From 6a5545d9657d71f2b637e32270fa52270442bbf8 Mon Sep 17 00:00:00 2001 From: paolo Date: Wed, 14 Feb 2018 17:59:29 +0000 Subject: /cp 2018-02-14 Paolo Carlini PR c++/84350 * pt.c (do_auto_deduction): Don't check the TREE_TYPE of a null init, early return. /testsuite 2018-02-14 Paolo Carlini PR c++/84350 * g++.dg/cpp0x/auto49.C: New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@257666 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/cp/ChangeLog | 6 ++++++ gcc/cp/pt.c | 2 +- gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/g++.dg/cpp0x/auto49.C | 12 ++++++++++++ 4 files changed, 24 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/g++.dg/cpp0x/auto49.C diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 673d6e32453..6c95dfe3a62 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,9 @@ +2018-02-14 Paolo Carlini + + PR c++/84350 + * pt.c (do_auto_deduction): Don't check the TREE_TYPE of a null + init, early return. + 2018-02-14 Nathan Sidwell * decl2.c (mark_vtable_entries): Set input_location to decl's. diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c index e62e320fe31..3ac7adba00c 100644 --- a/gcc/cp/pt.c +++ b/gcc/cp/pt.c @@ -25975,7 +25975,7 @@ do_auto_deduction (tree type, tree init, tree auto_node, /* C++17 class template argument deduction. */ return do_class_deduction (type, tmpl, init, flags, complain); - if (TREE_TYPE (init) == NULL_TREE) + if (init == NULL_TREE || TREE_TYPE (init) == NULL_TREE) /* Nothing we can do with this, even in deduction context. */ return type; diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 4fb11dfa011..7b6ba1d7336 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2018-02-14 Paolo Carlini + + PR c++/84350 + * g++.dg/cpp0x/auto49.C: New. + 2018-02-14 Nathan Sidwell * g++.dg/template/instantiate5.C: Adjust required-from loc. diff --git a/gcc/testsuite/g++.dg/cpp0x/auto49.C b/gcc/testsuite/g++.dg/cpp0x/auto49.C new file mode 100644 index 00000000000..25b09dfdec1 --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/auto49.C @@ -0,0 +1,12 @@ +// PR c++/84350 +// { dg-do compile { target c++11 } } + +template void foo(T... t) +{ + new auto(t...); // { dg-error "invalid use" } +} + +void bar() +{ + foo(); +} -- cgit v1.2.1 From 9ba421241e4803e309b288116e1365a0f288e35f Mon Sep 17 00:00:00 2001 From: kelvin Date: Wed, 14 Feb 2018 19:20:30 +0000 Subject: gcc/ChangeLog: 2018-02-14 Kelvin Nilsen * config/rs6000/rs6000.c (rs6000_option_override_internal): Issue warning message if user requests -maltivec=be. * doc/invoke.texi: Document deprecation of -maltivec=be. gcc/testsuite/ChangeLog: 2018-02-14 Kelvin Nilsen * gcc.dg/vmx/extract-be-order.c: Disable -maltivec=be warning so this test case still works ok. * gcc.dg/vmx/extract-vsx-be-order.c: Likewise. * gcc.dg/vmx/insert-be-order.c: Likewise. * gcc.dg/vmx/insert-vsx-be-order.c: Likewise. * gcc.dg/vmx/ld-be-order.c: Likewise. * gcc.dg/vmx/ld-vsx-be-order.c: Likewise. * gcc.dg/vmx/lde-be-order.c: Likewise. * gcc.dg/vmx/ldl-be-order.c: Likewise. * gcc.dg/vmx/ldl-vsx-be-order.c: Likewise. * gcc.dg/vmx/merge-be-order.c: Likewise. * gcc.dg/vmx/merge-vsx-be-order.c: Likewise. * gcc.dg/vmx/mult-even-odd-be-order.c: Likewise. * gcc.dg/vmx/pack-be-order.c: Likewise. * gcc.dg/vmx/perm-be-order.c: Likewise. * gcc.dg/vmx/splat-be-order.c: Likewise. * gcc.dg/vmx/splat-vsx-be-order.c: Likewise. * gcc.dg/vmx/st-be-order.c: Likewise. * gcc.dg/vmx/st-vsx-be-order.c: Likewise. * gcc.dg/vmx/ste-be-order.c: Likewise. * gcc.dg/vmx/stl-be-order.c: Likewise. * gcc.dg/vmx/stl-vsx-be-order.c: Likewise. * gcc.dg/vmx/sum2s-be-order.c: Likewise. * gcc.dg/vmx/unpack-be-order.c: Likewise. * gcc.dg/vmx/vsums-be-order.c: Likewise. * gcc.target/powerpc/vec-setup-be-long.c: Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@257668 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 6 +++++ gcc/config/rs6000/rs6000.c | 7 ++++++ gcc/doc/invoke.texi | 4 ++- gcc/testsuite/ChangeLog | 29 ++++++++++++++++++++++ gcc/testsuite/gcc.dg/vmx/extract-be-order.c | 3 ++- gcc/testsuite/gcc.dg/vmx/extract-vsx-be-order.c | 3 ++- gcc/testsuite/gcc.dg/vmx/insert-be-order.c | 3 ++- gcc/testsuite/gcc.dg/vmx/insert-vsx-be-order.c | 3 ++- gcc/testsuite/gcc.dg/vmx/ld-be-order.c | 3 ++- gcc/testsuite/gcc.dg/vmx/ld-vsx-be-order.c | 3 ++- gcc/testsuite/gcc.dg/vmx/lde-be-order.c | 3 ++- gcc/testsuite/gcc.dg/vmx/ldl-be-order.c | 3 ++- gcc/testsuite/gcc.dg/vmx/ldl-vsx-be-order.c | 3 ++- gcc/testsuite/gcc.dg/vmx/merge-be-order.c | 3 ++- gcc/testsuite/gcc.dg/vmx/merge-vsx-be-order.c | 3 ++- gcc/testsuite/gcc.dg/vmx/mult-even-odd-be-order.c | 3 ++- gcc/testsuite/gcc.dg/vmx/pack-be-order.c | 3 ++- gcc/testsuite/gcc.dg/vmx/perm-be-order.c | 3 ++- gcc/testsuite/gcc.dg/vmx/splat-be-order.c | 3 ++- gcc/testsuite/gcc.dg/vmx/splat-vsx-be-order.c | 3 ++- gcc/testsuite/gcc.dg/vmx/st-be-order.c | 3 ++- gcc/testsuite/gcc.dg/vmx/st-vsx-be-order.c | 3 ++- gcc/testsuite/gcc.dg/vmx/ste-be-order.c | 3 ++- gcc/testsuite/gcc.dg/vmx/stl-be-order.c | 3 ++- gcc/testsuite/gcc.dg/vmx/stl-vsx-be-order.c | 3 ++- gcc/testsuite/gcc.dg/vmx/sum2s-be-order.c | 3 ++- gcc/testsuite/gcc.dg/vmx/unpack-be-order.c | 3 ++- gcc/testsuite/gcc.dg/vmx/vsums-be-order.c | 3 ++- .../gcc.target/powerpc/vec-setup-be-long.c | 3 ++- 29 files changed, 95 insertions(+), 26 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 62c78631f01..e0b2e0f8df0 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2018-02-14 Kelvin Nilsen + + * config/rs6000/rs6000.c (rs6000_option_override_internal): Issue + warning message if user requests -maltivec=be. + * doc/invoke.texi: Document deprecation of -maltivec=be. + 2018-02-14 Will Schmidt PR target/84220 diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c index ddfc10666a3..3bb8d2a9224 100644 --- a/gcc/config/rs6000/rs6000.c +++ b/gcc/config/rs6000/rs6000.c @@ -4028,6 +4028,13 @@ rs6000_option_override_internal (bool global_init_p) if (global_init_p) rs6000_isa_flags_explicit = global_options_set.x_rs6000_isa_flags; + /* We plan to deprecate the -maltivec=be option. For now, just + issue a warning message. */ + if (global_init_p + && rs6000_altivec_element_order == 2) + warning (0, "%qs command-line option is deprecated", + "-maltivec=be"); + /* On 64-bit Darwin, power alignment is ABI-incompatible with some C library functions, so warn about it. The flag may be useful for performance studies from time to time though, so don't disable it diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi index 48194c825f3..f0b11a01354 100644 --- a/gcc/doc/invoke.texi +++ b/gcc/doc/invoke.texi @@ -23371,7 +23371,9 @@ little-endian platform. @opindex maltivec=be Generate AltiVec instructions using big-endian element order, regardless of whether the target is big- or little-endian. This is -the default when targeting a big-endian platform. +the default when targeting a big-endian platform. Using this option +is currently deprecated. Support for this feature will be removed in +GCC 9. The element order is used to interpret element numbers in AltiVec intrinsics such as @code{vec_splat}, @code{vec_extract}, and diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 7b6ba1d7336..33967f23813 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,32 @@ +2018-02-14 Kelvin Nilsen + + * gcc.dg/vmx/extract-be-order.c: Disable -maltivec=be warning so + this test case still works ok. + * gcc.dg/vmx/extract-vsx-be-order.c: Likewise. + * gcc.dg/vmx/insert-be-order.c: Likewise. + * gcc.dg/vmx/insert-vsx-be-order.c: Likewise. + * gcc.dg/vmx/ld-be-order.c: Likewise. + * gcc.dg/vmx/ld-vsx-be-order.c: Likewise. + * gcc.dg/vmx/lde-be-order.c: Likewise. + * gcc.dg/vmx/ldl-be-order.c: Likewise. + * gcc.dg/vmx/ldl-vsx-be-order.c: Likewise. + * gcc.dg/vmx/merge-be-order.c: Likewise. + * gcc.dg/vmx/merge-vsx-be-order.c: Likewise. + * gcc.dg/vmx/mult-even-odd-be-order.c: Likewise. + * gcc.dg/vmx/pack-be-order.c: Likewise. + * gcc.dg/vmx/perm-be-order.c: Likewise. + * gcc.dg/vmx/splat-be-order.c: Likewise. + * gcc.dg/vmx/splat-vsx-be-order.c: Likewise. + * gcc.dg/vmx/st-be-order.c: Likewise. + * gcc.dg/vmx/st-vsx-be-order.c: Likewise. + * gcc.dg/vmx/ste-be-order.c: Likewise. + * gcc.dg/vmx/stl-be-order.c: Likewise. + * gcc.dg/vmx/stl-vsx-be-order.c: Likewise. + * gcc.dg/vmx/sum2s-be-order.c: Likewise. + * gcc.dg/vmx/unpack-be-order.c: Likewise. + * gcc.dg/vmx/vsums-be-order.c: Likewise. + * gcc.target/powerpc/vec-setup-be-long.c: Likewise. + 2018-02-14 Paolo Carlini PR c++/84350 diff --git a/gcc/testsuite/gcc.dg/vmx/extract-be-order.c b/gcc/testsuite/gcc.dg/vmx/extract-be-order.c index 5c09471d99b..f03c356781a 100644 --- a/gcc/testsuite/gcc.dg/vmx/extract-be-order.c +++ b/gcc/testsuite/gcc.dg/vmx/extract-be-order.c @@ -1,4 +1,5 @@ -/* { dg-options "-maltivec=be -mabi=altivec -std=gnu99 -mno-vsx" } */ +/* Disable warnings to squelch deprecation message about -maltivec=be. */ +/* { dg-options "-maltivec=be -mabi=altivec -std=gnu99 -mno-vsx -w" } */ #include "harness.h" diff --git a/gcc/testsuite/gcc.dg/vmx/extract-vsx-be-order.c b/gcc/testsuite/gcc.dg/vmx/extract-vsx-be-order.c index 8c965f6fd66..509a7b62181 100644 --- a/gcc/testsuite/gcc.dg/vmx/extract-vsx-be-order.c +++ b/gcc/testsuite/gcc.dg/vmx/extract-vsx-be-order.c @@ -1,6 +1,7 @@ /* { dg-skip-if "" { powerpc*-*-darwin* } } */ /* { dg-require-effective-target powerpc_vsx_ok } */ -/* { dg-options "-maltivec=be -mabi=altivec -std=gnu99 -mvsx" } */ +/* Disable warnings to squelch deprecation message about -maltivec=be. */ +/* { dg-options "-maltivec=be -mabi=altivec -std=gnu99 -mvsx -w" } */ #include "harness.h" diff --git a/gcc/testsuite/gcc.dg/vmx/insert-be-order.c b/gcc/testsuite/gcc.dg/vmx/insert-be-order.c index 592ef28c0fc..7aa28f85b77 100644 --- a/gcc/testsuite/gcc.dg/vmx/insert-be-order.c +++ b/gcc/testsuite/gcc.dg/vmx/insert-be-order.c @@ -1,4 +1,5 @@ -/* { dg-options "-maltivec=be -mabi=altivec -std=gnu99 -mno-vsx" } */ +/* Disable warnings to squelch deprecation message about -maltivec=be. */ +/* { dg-options "-w -maltivec=be -mabi=altivec -std=gnu99 -mno-vsx" } */ #include "harness.h" diff --git a/gcc/testsuite/gcc.dg/vmx/insert-vsx-be-order.c b/gcc/testsuite/gcc.dg/vmx/insert-vsx-be-order.c index 6cb59dd8a63..569a86606c7 100644 --- a/gcc/testsuite/gcc.dg/vmx/insert-vsx-be-order.c +++ b/gcc/testsuite/gcc.dg/vmx/insert-vsx-be-order.c @@ -1,6 +1,7 @@ /* { dg-skip-if "" { powerpc*-*-darwin* } } */ /* { dg-require-effective-target powerpc_vsx_ok } */ -/* { dg-options "-maltivec=be -mabi=altivec -std=gnu99 -mvsx" } */ +/* Disable warnings to squelch deprecation message about -maltivec=be. */ +/* { dg-options "-w -maltivec=be -mabi=altivec -std=gnu99 -mvsx" } */ #include "harness.h" diff --git a/gcc/testsuite/gcc.dg/vmx/ld-be-order.c b/gcc/testsuite/gcc.dg/vmx/ld-be-order.c index 903b997c9a3..f7361cfd372 100644 --- a/gcc/testsuite/gcc.dg/vmx/ld-be-order.c +++ b/gcc/testsuite/gcc.dg/vmx/ld-be-order.c @@ -1,4 +1,5 @@ -/* { dg-options "-maltivec=be -mabi=altivec -std=gnu99 -mno-vsx" } */ +/* Disable warnings to squelch deprecation message about -maltivec=be. */ +/* { dg-options "-w -maltivec=be -mabi=altivec -std=gnu99 -mno-vsx" } */ #include "harness.h" diff --git a/gcc/testsuite/gcc.dg/vmx/ld-vsx-be-order.c b/gcc/testsuite/gcc.dg/vmx/ld-vsx-be-order.c index c870c55e856..f02366756b9 100644 --- a/gcc/testsuite/gcc.dg/vmx/ld-vsx-be-order.c +++ b/gcc/testsuite/gcc.dg/vmx/ld-vsx-be-order.c @@ -1,6 +1,7 @@ /* { dg-skip-if "" { powerpc*-*-darwin* } } */ /* { dg-require-effective-target powerpc_vsx_ok } */ -/* { dg-options "-maltivec=be -mabi=altivec -std=gnu99 -mvsx" } */ +/* Disable warnings to squelch deprecation message about -maltivec=be. */ +/* { dg-options "-w -maltivec=be -mabi=altivec -std=gnu99 -mvsx" } */ #include "harness.h" diff --git a/gcc/testsuite/gcc.dg/vmx/lde-be-order.c b/gcc/testsuite/gcc.dg/vmx/lde-be-order.c index 9a6d5bae52d..53c3b78a71d 100644 --- a/gcc/testsuite/gcc.dg/vmx/lde-be-order.c +++ b/gcc/testsuite/gcc.dg/vmx/lde-be-order.c @@ -1,4 +1,5 @@ -/* { dg-options "-maltivec=be -mabi=altivec -std=gnu99 -mno-vsx" } */ +/* Disable warnings to squelch deprecation message about -maltivec=be. */ +/* { dg-options "-w -maltivec=be -mabi=altivec -std=gnu99 -mno-vsx" } */ #include "harness.h" diff --git a/gcc/testsuite/gcc.dg/vmx/ldl-be-order.c b/gcc/testsuite/gcc.dg/vmx/ldl-be-order.c index 397849fe1f5..49ba48b0462 100644 --- a/gcc/testsuite/gcc.dg/vmx/ldl-be-order.c +++ b/gcc/testsuite/gcc.dg/vmx/ldl-be-order.c @@ -1,4 +1,5 @@ -/* { dg-options "-maltivec=be -mabi=altivec -std=gnu99 -mno-vsx" } */ +/* Disable warnings to squelch deprecation message about -maltivec=be. */ +/* { dg-options "-w -maltivec=be -mabi=altivec -std=gnu99 -mno-vsx" } */ #include "harness.h" diff --git a/gcc/testsuite/gcc.dg/vmx/ldl-vsx-be-order.c b/gcc/testsuite/gcc.dg/vmx/ldl-vsx-be-order.c index 222d1db0d75..edac6764fc2 100644 --- a/gcc/testsuite/gcc.dg/vmx/ldl-vsx-be-order.c +++ b/gcc/testsuite/gcc.dg/vmx/ldl-vsx-be-order.c @@ -1,6 +1,7 @@ /* { dg-skip-if "" { powerpc*-*-darwin* } } */ /* { dg-require-effective-target powerpc_vsx_ok } */ -/* { dg-options "-maltivec=be -mabi=altivec -std=gnu99 -mvsx" } */ +/* Disable warnings to squelch deprecation message about -maltivec=be. */ +/* { dg-options "-w -maltivec=be -mabi=altivec -std=gnu99 -mvsx" } */ #include "harness.h" diff --git a/gcc/testsuite/gcc.dg/vmx/merge-be-order.c b/gcc/testsuite/gcc.dg/vmx/merge-be-order.c index 2de888fa444..4cc0d4490e5 100644 --- a/gcc/testsuite/gcc.dg/vmx/merge-be-order.c +++ b/gcc/testsuite/gcc.dg/vmx/merge-be-order.c @@ -1,4 +1,5 @@ -/* { dg-options "-maltivec=be -mabi=altivec -std=gnu99 -mno-vsx" } */ +/* Disable warnings to squelch deprecation message about -maltivec=be. */ +/* { dg-options "-w -maltivec=be -mabi=altivec -std=gnu99 -mno-vsx" } */ #include "harness.h" diff --git a/gcc/testsuite/gcc.dg/vmx/merge-vsx-be-order.c b/gcc/testsuite/gcc.dg/vmx/merge-vsx-be-order.c index b01208d5f40..67193278ae6 100644 --- a/gcc/testsuite/gcc.dg/vmx/merge-vsx-be-order.c +++ b/gcc/testsuite/gcc.dg/vmx/merge-vsx-be-order.c @@ -1,6 +1,7 @@ /* { dg-skip-if "" { powerpc*-*-darwin* } } */ /* { dg-require-effective-target powerpc_vsx_ok } */ -/* { dg-options "-maltivec=be -mabi=altivec -std=gnu99 -mvsx" } */ +/* Disable warnings to squelch deprecation message about -maltivec=be. */ +/* { dg-options "-w -maltivec=be -mabi=altivec -std=gnu99 -mvsx" } */ #include "harness.h" diff --git a/gcc/testsuite/gcc.dg/vmx/mult-even-odd-be-order.c b/gcc/testsuite/gcc.dg/vmx/mult-even-odd-be-order.c index 6ba12d04634..84a89515b0d 100644 --- a/gcc/testsuite/gcc.dg/vmx/mult-even-odd-be-order.c +++ b/gcc/testsuite/gcc.dg/vmx/mult-even-odd-be-order.c @@ -1,4 +1,5 @@ -/* { dg-options "-maltivec=be -mabi=altivec -std=gnu99 -mno-vsx" } */ +/* Disable warnings to squelch deprecation message about -maltivec=be. */ +/* { dg-options "-w -maltivec=be -mabi=altivec -std=gnu99 -mno-vsx" } */ #include "harness.h" diff --git a/gcc/testsuite/gcc.dg/vmx/pack-be-order.c b/gcc/testsuite/gcc.dg/vmx/pack-be-order.c index c400fc882dd..3e71b3130a1 100644 --- a/gcc/testsuite/gcc.dg/vmx/pack-be-order.c +++ b/gcc/testsuite/gcc.dg/vmx/pack-be-order.c @@ -1,4 +1,5 @@ -/* { dg-options "-maltivec=be -mabi=altivec -std=gnu99 -mno-vsx" } */ +/* Disable warnings to squelch deprecation message about -maltivec=be. */ +/* { dg-options "-w -maltivec=be -mabi=altivec -std=gnu99 -mno-vsx" } */ #include "harness.h" diff --git a/gcc/testsuite/gcc.dg/vmx/perm-be-order.c b/gcc/testsuite/gcc.dg/vmx/perm-be-order.c index 604f63dc95f..3a7942840f5 100644 --- a/gcc/testsuite/gcc.dg/vmx/perm-be-order.c +++ b/gcc/testsuite/gcc.dg/vmx/perm-be-order.c @@ -1,4 +1,5 @@ -/* { dg-options "-maltivec=be -mabi=altivec -std=gnu99 -mno-vsx" } */ +/* Disable warnings to squelch deprecation message about -maltivec=be. */ +/* { dg-options "-w -maltivec=be -mabi=altivec -std=gnu99 -mno-vsx" } */ #include "harness.h" diff --git a/gcc/testsuite/gcc.dg/vmx/splat-be-order.c b/gcc/testsuite/gcc.dg/vmx/splat-be-order.c index e265ae4be20..96d086939ef 100644 --- a/gcc/testsuite/gcc.dg/vmx/splat-be-order.c +++ b/gcc/testsuite/gcc.dg/vmx/splat-be-order.c @@ -1,4 +1,5 @@ -/* { dg-options "-maltivec=be -mabi=altivec -std=gnu99 -mno-vsx" } */ +/* Disable warnings to squelch deprecation message about -maltivec=be. */ +/* { dg-options "-w -maltivec=be -mabi=altivec -std=gnu99 -mno-vsx" } */ #include "harness.h" diff --git a/gcc/testsuite/gcc.dg/vmx/splat-vsx-be-order.c b/gcc/testsuite/gcc.dg/vmx/splat-vsx-be-order.c index 620a31f7692..e0dca6b5dfb 100644 --- a/gcc/testsuite/gcc.dg/vmx/splat-vsx-be-order.c +++ b/gcc/testsuite/gcc.dg/vmx/splat-vsx-be-order.c @@ -1,6 +1,7 @@ /* { dg-skip-if "" { powerpc*-*-darwin* } } */ /* { dg-require-effective-target powerpc_vsx_ok } */ -/* { dg-options "-maltivec=be -mabi=altivec -std=gnu99 -mvsx" } */ +/* Disable warnings to squelch deprecation message about -maltivec=be. */ +/* { dg-options "-w -maltivec=be -mabi=altivec -std=gnu99 -mvsx" } */ #include "harness.h" diff --git a/gcc/testsuite/gcc.dg/vmx/st-be-order.c b/gcc/testsuite/gcc.dg/vmx/st-be-order.c index 1a7b01bb5a1..e1cd826665a 100644 --- a/gcc/testsuite/gcc.dg/vmx/st-be-order.c +++ b/gcc/testsuite/gcc.dg/vmx/st-be-order.c @@ -1,4 +1,5 @@ -/* { dg-options "-maltivec=be -mabi=altivec -std=gnu99 -mno-vsx" } */ +/* Disable warnings to squelch deprecation message about -maltivec=be. */ +/* { dg-options "-w -maltivec=be -mabi=altivec -std=gnu99 -mno-vsx" } */ #include "harness.h" diff --git a/gcc/testsuite/gcc.dg/vmx/st-vsx-be-order.c b/gcc/testsuite/gcc.dg/vmx/st-vsx-be-order.c index 48814462106..1ce8f41552e 100644 --- a/gcc/testsuite/gcc.dg/vmx/st-vsx-be-order.c +++ b/gcc/testsuite/gcc.dg/vmx/st-vsx-be-order.c @@ -1,6 +1,7 @@ /* { dg-skip-if "" { powerpc*-*-darwin* } } */ /* { dg-require-effective-target powerpc_vsx_ok } */ -/* { dg-options "-maltivec=be -mabi=altivec -std=gnu99 -mvsx" } */ +/* Disable warnings to squelch deprecation message about -maltivec=be. */ +/* { dg-options "-w -maltivec=be -mabi=altivec -std=gnu99 -mvsx" } */ #include "harness.h" diff --git a/gcc/testsuite/gcc.dg/vmx/ste-be-order.c b/gcc/testsuite/gcc.dg/vmx/ste-be-order.c index 75f2004f372..cfc6877af3c 100644 --- a/gcc/testsuite/gcc.dg/vmx/ste-be-order.c +++ b/gcc/testsuite/gcc.dg/vmx/ste-be-order.c @@ -1,4 +1,5 @@ -/* { dg-options "-maltivec=be -mabi=altivec -std=gnu99 -mno-vsx" } */ +/* Disable warnings to squelch deprecation message about -maltivec=be. */ +/* { dg-options "-w -maltivec=be -mabi=altivec -std=gnu99 -mno-vsx" } */ #include "harness.h" diff --git a/gcc/testsuite/gcc.dg/vmx/stl-be-order.c b/gcc/testsuite/gcc.dg/vmx/stl-be-order.c index 7f00a036499..28fd9e77454 100644 --- a/gcc/testsuite/gcc.dg/vmx/stl-be-order.c +++ b/gcc/testsuite/gcc.dg/vmx/stl-be-order.c @@ -1,4 +1,5 @@ -/* { dg-options "-maltivec=be -mabi=altivec -std=gnu99 -mno-vsx" } */ +/* Disable warnings to squelch deprecation message about -maltivec=be. */ +/* { dg-options "-w -maltivec=be -mabi=altivec -std=gnu99 -mno-vsx" } */ #include "harness.h" diff --git a/gcc/testsuite/gcc.dg/vmx/stl-vsx-be-order.c b/gcc/testsuite/gcc.dg/vmx/stl-vsx-be-order.c index 65e2f256d06..1abd3edefe9 100644 --- a/gcc/testsuite/gcc.dg/vmx/stl-vsx-be-order.c +++ b/gcc/testsuite/gcc.dg/vmx/stl-vsx-be-order.c @@ -1,6 +1,7 @@ /* { dg-skip-if "" { powerpc*-*-darwin* } } */ /* { dg-require-effective-target powerpc_vsx_ok } */ -/* { dg-options "-maltivec=be -mabi=altivec -std=gnu99 -mvsx" } */ +/* Disable warnings to squelch deprecation message about -maltivec=be. */ +/* { dg-options "-w -maltivec=be -mabi=altivec -std=gnu99 -mvsx" } */ #include "harness.h" diff --git a/gcc/testsuite/gcc.dg/vmx/sum2s-be-order.c b/gcc/testsuite/gcc.dg/vmx/sum2s-be-order.c index 0981cc1d52b..03c6faa0ca6 100644 --- a/gcc/testsuite/gcc.dg/vmx/sum2s-be-order.c +++ b/gcc/testsuite/gcc.dg/vmx/sum2s-be-order.c @@ -1,4 +1,5 @@ -/* { dg-options "-maltivec=be -mabi=altivec -std=gnu99 -mno-vsx" } */ +/* Disable warnings to squelch deprecation message about -maltivec=be. */ +/* { dg-options "-w -maltivec=be -mabi=altivec -std=gnu99 -mno-vsx" } */ #include "harness.h" diff --git a/gcc/testsuite/gcc.dg/vmx/unpack-be-order.c b/gcc/testsuite/gcc.dg/vmx/unpack-be-order.c index 6eb98f4cf72..0d65a4fafbb 100644 --- a/gcc/testsuite/gcc.dg/vmx/unpack-be-order.c +++ b/gcc/testsuite/gcc.dg/vmx/unpack-be-order.c @@ -1,4 +1,5 @@ -/* { dg-options "-maltivec=be -mabi=altivec -std=gnu99 -mno-vsx -Wno-shift-overflow" } */ +/* Disable warnings to squelch deprecation message about -maltivec=be. */ +/* { dg-options "-w -maltivec=be -mabi=altivec -std=gnu99 -mno-vsx -Wno-shift-overflow" } */ #include "harness.h" diff --git a/gcc/testsuite/gcc.dg/vmx/vsums-be-order.c b/gcc/testsuite/gcc.dg/vmx/vsums-be-order.c index e4a34e9f966..1f640e76112 100644 --- a/gcc/testsuite/gcc.dg/vmx/vsums-be-order.c +++ b/gcc/testsuite/gcc.dg/vmx/vsums-be-order.c @@ -1,4 +1,5 @@ -/* { dg-options "-maltivec=be -mabi=altivec -std=gnu99 -mno-vsx" } */ +/* Disable warnings to squelch deprecation message about -maltivec=be. */ +/* { dg-options "-w -maltivec=be -mabi=altivec -std=gnu99 -mno-vsx" } */ #include "harness.h" diff --git a/gcc/testsuite/gcc.target/powerpc/vec-setup-be-long.c b/gcc/testsuite/gcc.target/powerpc/vec-setup-be-long.c index 492cd2d76a2..691b378698f 100644 --- a/gcc/testsuite/gcc.target/powerpc/vec-setup-be-long.c +++ b/gcc/testsuite/gcc.target/powerpc/vec-setup-be-long.c @@ -1,6 +1,7 @@ /* { dg-do run { target { powerpc64le*-*-linux* } } } */ /* { dg-require-effective-target vsx_hw } */ -/* { dg-options "-O2 -mvsx -maltivec=be" } */ +/* Disable warnings to squelch deprecation message about -maltivec=be. */ +/* { dg-options "-w -O2 -mvsx -maltivec=be" } */ /* Test various ways of creating vectors with 2 double words and accessing the elements. This test uses the long (on 64-bit systems) or long long datatype -- cgit v1.2.1 From aa79dc0c8a962aaa10a8cb344b090fe13918bc8f Mon Sep 17 00:00:00 2001 From: uros Date: Wed, 14 Feb 2018 19:24:04 +0000 Subject: * gcc.target/i386/pr57193.c (dg-do): Remove target selector. (dg-options): Use -O2 -msse2 -mno-sse3. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@257669 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/testsuite/ChangeLog | 9 +++++++-- gcc/testsuite/gcc.target/i386/pr57193.c | 4 ++-- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 33967f23813..c7df80c57e9 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2017-02-14 Uros Bizjak + + * gcc.target/i386/pr57193.c (dg-do): Remove target selector. + (dg-options): Use -O2 -msse2 -mno-sse3. + 2018-02-14 Kelvin Nilsen * gcc.dg/vmx/extract-be-order.c: Disable -maltivec=be warning so @@ -135,7 +140,7 @@ 2018-02-13 Vladimir Makarov PR target/84359 - * gcc.target/i386/57193.c: Add -march=x86-64. + * gcc.target/i386/pr57193.c: Add -march=x86-64. 2018-02-13 Paolo Bonzini @@ -322,7 +327,7 @@ 2018-02-09 Vladimir Makarov PR rtl-optimization/57193 - * gcc.target/i386/57193.c: New. + * gcc.target/i386/pr57193.c: New. 2018-02-09 Jakub Jelinek diff --git a/gcc/testsuite/gcc.target/i386/pr57193.c b/gcc/testsuite/gcc.target/i386/pr57193.c index ef209c9d211..5bf0b42c9a7 100644 --- a/gcc/testsuite/gcc.target/i386/pr57193.c +++ b/gcc/testsuite/gcc.target/i386/pr57193.c @@ -1,5 +1,5 @@ -/* { dg-do compile { target { ! ia32 } } } */ -/* { dg-options "-O2 -march=x86-64" } */ +/* { dg-do compile } */ +/* { dg-options "-O2 -msse2 -mno-sse3" } */ /* { dg-final { scan-assembler-times "movdqa" 2 } } */ #include -- cgit v1.2.1 From 17c5cd4206260a739cfdc474fb4d290c8a7104f6 Mon Sep 17 00:00:00 2001 From: danglin Date: Wed, 14 Feb 2018 21:13:26 +0000 Subject: PR target/83984 * config/pa/pa.md: Load address of PIC label using the linkage table if the label is nonlocal. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@257672 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 6 ++++ gcc/config/pa/pa.md | 82 ++++++++++++++++++++++++++++++++++------------------- 2 files changed, 59 insertions(+), 29 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index e0b2e0f8df0..97067a3ffe2 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2018-02-14 John David Anglin + + PR target/83984 + * config/pa/pa.md: Load address of PIC label using the linkage table + if the label is nonlocal. + 2018-02-14 Kelvin Nilsen * config/rs6000/rs6000.c (rs6000_option_override_internal): Issue diff --git a/gcc/config/pa/pa.md b/gcc/config/pa/pa.md index e581aadd15e..e748f053651 100644 --- a/gcc/config/pa/pa.md +++ b/gcc/config/pa/pa.md @@ -2536,24 +2536,40 @@ xoperands[0] = operands[0]; xoperands[1] = operands[1]; - xoperands[2] = gen_label_rtx (); - (*targetm.asm_out.internal_label) (asm_out_file, \"L\", - CODE_LABEL_NUMBER (xoperands[2])); - output_asm_insn (\"mfia %0\", xoperands); - - /* If we're trying to load the address of a label that happens to be - close, then we can use a shorter sequence. */ if (GET_CODE (operands[1]) == LABEL_REF - && !LABEL_REF_NONLOCAL_P (operands[1]) - && INSN_ADDRESSES_SET_P () - && abs (INSN_ADDRESSES (INSN_UID (XEXP (operands[1], 0))) - - INSN_ADDRESSES (INSN_UID (insn))) < 8100) - output_asm_insn (\"ldo %1-%2(%0),%0\", xoperands); + && !LABEL_REF_NONLOCAL_P (operands[1])) + { + xoperands[2] = gen_label_rtx (); + (*targetm.asm_out.internal_label) (asm_out_file, \"L\", + CODE_LABEL_NUMBER (xoperands[2])); + output_asm_insn (\"mfia %0\", xoperands); + + /* If we're trying to load the address of a label that happens to be + close, then we can use a shorter sequence. */ + if (INSN_ADDRESSES_SET_P () + && abs (INSN_ADDRESSES (INSN_UID (XEXP (operands[1], 0))) + - INSN_ADDRESSES (INSN_UID (insn))) < 8100) + output_asm_insn (\"ldo %1-%2(%0),%0\", xoperands); + else + { + output_asm_insn (\"addil L%%%1-%2,%0\", xoperands); + output_asm_insn (\"ldo R%%%1-%2(%0),%0\", xoperands); + } + } else { - output_asm_insn (\"addil L%%%1-%2,%0\", xoperands); - output_asm_insn (\"ldo R%%%1-%2(%0),%0\", xoperands); + /* Load using linkage table. */ + if (TARGET_64BIT) + { + output_asm_insn (\"addil LT%%%1,%%r27\", xoperands); + output_asm_insn (\"ldd RT%%%1(%0),%0\", xoperands); + } + else + { + output_asm_insn (\"addil LT%%%1,%%r19\", xoperands); + output_asm_insn (\"ldw RT%%%1(%0),%0\", xoperands); + } } return \"\"; }" @@ -2570,25 +2586,33 @@ xoperands[0] = operands[0]; xoperands[1] = operands[1]; - xoperands[2] = gen_label_rtx (); - output_asm_insn (\"bl .+8,%0\", xoperands); - output_asm_insn (\"depi 0,31,2,%0\", xoperands); - (*targetm.asm_out.internal_label) (asm_out_file, \"L\", - CODE_LABEL_NUMBER (xoperands[2])); - - /* If we're trying to load the address of a label that happens to be - close, then we can use a shorter sequence. */ if (GET_CODE (operands[1]) == LABEL_REF - && !LABEL_REF_NONLOCAL_P (operands[1]) - && INSN_ADDRESSES_SET_P () - && abs (INSN_ADDRESSES (INSN_UID (XEXP (operands[1], 0))) - - INSN_ADDRESSES (INSN_UID (insn))) < 8100) - output_asm_insn (\"ldo %1-%2(%0),%0\", xoperands); + && !LABEL_REF_NONLOCAL_P (operands[1])) + { + xoperands[2] = gen_label_rtx (); + output_asm_insn (\"bl .+8,%0\", xoperands); + output_asm_insn (\"depi 0,31,2,%0\", xoperands); + (*targetm.asm_out.internal_label) (asm_out_file, \"L\", + CODE_LABEL_NUMBER (xoperands[2])); + + /* If we're trying to load the address of a label that happens to be + close, then we can use a shorter sequence. */ + if (INSN_ADDRESSES_SET_P () + && abs (INSN_ADDRESSES (INSN_UID (XEXP (operands[1], 0))) + - INSN_ADDRESSES (INSN_UID (insn))) < 8100) + output_asm_insn (\"ldo %1-%2(%0),%0\", xoperands); + else + { + output_asm_insn (\"addil L%%%1-%2,%0\", xoperands); + output_asm_insn (\"ldo R%%%1-%2(%0),%0\", xoperands); + } + } else { - output_asm_insn (\"addil L%%%1-%2,%0\", xoperands); - output_asm_insn (\"ldo R%%%1-%2(%0),%0\", xoperands); + /* Load using linkage table. */ + output_asm_insn (\"addil LT%%%1,%%r19\", xoperands); + output_asm_insn (\"ldw RT%%%1(%0),%0\", xoperands); } return \"\"; }" -- cgit v1.2.1 From d4107a359f6a75b0b82d6e503969e56203c53476 Mon Sep 17 00:00:00 2001 From: janus Date: Wed, 14 Feb 2018 21:46:59 +0000 Subject: 2018-02-14 Janus Weil PR fortran/84385 * match.c (gfc_match_select_type): Fix check for selector in SELECT TYPE statement. 2018-02-14 Janus Weil PR fortran/84385 * gfortran.dg/allocate_with_source_22.f03: Fix invalid test case. * gfortran.dg/allocate_with_source_23.f90: Ditto. * gfortran.dg/select_type_1.f03: Extend test case. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@257673 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/fortran/ChangeLog | 6 ++++++ gcc/fortran/match.c | 3 ++- gcc/testsuite/ChangeLog | 7 +++++++ gcc/testsuite/gfortran.dg/allocate_with_source_22.f03 | 2 +- gcc/testsuite/gfortran.dg/allocate_with_source_23.f03 | 4 ++-- gcc/testsuite/gfortran.dg/select_type_1.f03 | 2 ++ 6 files changed, 20 insertions(+), 4 deletions(-) diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 01e2a906443..ed91bf79b52 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,9 @@ +2018-02-14 Janus Weil + + PR fortran/84385 + * match.c (gfc_match_select_type): Fix check for selector in + SELECT TYPE statement. + 2018-02-13 Janus Weil PR fortran/84313 diff --git a/gcc/fortran/match.c b/gcc/fortran/match.c index 9313f435ffb..8f3a027c209 100644 --- a/gcc/fortran/match.c +++ b/gcc/fortran/match.c @@ -6201,9 +6201,10 @@ gfc_match_select_type (void) || CLASS_DATA (expr1)->attr.codimension) && expr1->ref && expr1->ref->type == REF_ARRAY + && expr1->ref->u.ar.type == AR_FULL && expr1->ref->next == NULL); - /* Check for F03:C811. */ + /* Check for F03:C811 (F08:C835). */ if (!expr2 && (expr1->expr_type != EXPR_VARIABLE || (!class_array && expr1->ref != NULL))) { diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index c7df80c57e9..e3d1cec40f1 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,10 @@ +2018-02-14 Janus Weil + + PR fortran/84385 + * gfortran.dg/allocate_with_source_22.f03: Fix invalid test case. + * gfortran.dg/allocate_with_source_23.f90: Ditto. + * gfortran.dg/select_type_1.f03: Extend test case. + 2017-02-14 Uros Bizjak * gcc.target/i386/pr57193.c (dg-do): Remove target selector. diff --git a/gcc/testsuite/gfortran.dg/allocate_with_source_22.f03 b/gcc/testsuite/gfortran.dg/allocate_with_source_22.f03 index b8689f95a54..babda71a325 100644 --- a/gcc/testsuite/gfortran.dg/allocate_with_source_22.f03 +++ b/gcc/testsuite/gfortran.dg/allocate_with_source_22.f03 @@ -27,7 +27,7 @@ subroutine test_class() ! with -fcheck=bounds. if (size(b) /= 4) call abort() if (any(b(1:2)%i /= [ 1,2])) call abort() - select type (b(1)) + select type (b1 => b(1)) class is (tt) continue class default diff --git a/gcc/testsuite/gfortran.dg/allocate_with_source_23.f03 b/gcc/testsuite/gfortran.dg/allocate_with_source_23.f03 index cfe8bd80e2f..51ea0c627a4 100644 --- a/gcc/testsuite/gfortran.dg/allocate_with_source_23.f03 +++ b/gcc/testsuite/gfortran.dg/allocate_with_source_23.f03 @@ -28,7 +28,7 @@ subroutine test_class_correct() allocate(b(1:4), source=a(1)) if (size(b) /= 4) call abort() if (any(b(:)%i /= [ 1,1,1,1])) call abort() - select type (b(1)) + select type (b1 => b(1)) class is (tt) continue class default @@ -46,7 +46,7 @@ subroutine test_class_fail() allocate(b(1:4), source=a) ! Fail expected: sizes do not conform if (size(b) /= 4) call abort() if (any(b(1:2)%i /= [ 1,2])) call abort() - select type (b(1)) + select type (b1 => b(1)) class is (tt) continue class default diff --git a/gcc/testsuite/gfortran.dg/select_type_1.f03 b/gcc/testsuite/gfortran.dg/select_type_1.f03 index b92366db704..695f75661b8 100644 --- a/gcc/testsuite/gfortran.dg/select_type_1.f03 +++ b/gcc/testsuite/gfortran.dg/select_type_1.f03 @@ -23,6 +23,7 @@ end type class(t1), pointer :: a => NULL() + class(t1), allocatable, dimension(:) :: ca type(t1), target :: b type(t2), target :: c a => b @@ -32,6 +33,7 @@ select type (3.5) ! { dg-error "is not a named variable" } select type (a%cp) ! { dg-error "is not a named variable" } + select type (ca(1))! { dg-error "is not a named variable" } select type (b) ! { dg-error "Selector shall be polymorphic" } end select -- cgit v1.2.1 From b35ec6e15ad54da56d8caa9d614ec9519cb01cb7 Mon Sep 17 00:00:00 2001 From: msebor Date: Wed, 14 Feb 2018 22:02:43 +0000 Subject: PR middle-end/84108 - incorrect -Wattributes warning for packed/aligned conflict on struct members gcc/ChangeLog: PR c/84108 * attribs.c (diag_attr_exclusions): Consider the exclusion(s) that correspond to the kind of a declaration. gcc/testsuite/ChangeLog: PR c/84108 * gcc.dg/Wattributes-8.c: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@257674 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 6 ++++++ gcc/attribs.c | 16 +++++++++++++++ gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/gcc.dg/Wattributes-8.c | 38 ++++++++++++++++++++++++++++++++++++ 4 files changed, 65 insertions(+) create mode 100644 gcc/testsuite/gcc.dg/Wattributes-8.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 97067a3ffe2..e16acd45413 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2018-02-14 Martin Sebor + + PR c/84108 + * attribs.c (diag_attr_exclusions): Consider the exclusion(s) + that correspond to the kind of a declaration. + 2018-02-14 John David Anglin PR target/83984 diff --git a/gcc/attribs.c b/gcc/attribs.c index 2cac9c403b4..140863be1d9 100644 --- a/gcc/attribs.c +++ b/gcc/attribs.c @@ -410,6 +410,22 @@ diag_attr_exclusions (tree last_decl, tree node, tree attrname, if (!lookup_attribute (excl->name, attrs[i])) continue; + /* An exclusion may apply either to a function declaration, + type declaration, or a field/variable declaration, or + any subset of the three. */ + if (TREE_CODE (node) == FUNCTION_DECL + && !excl->function) + continue; + + if (TREE_CODE (node) == TYPE_DECL + && !excl->type) + continue; + + if ((TREE_CODE (node) == FIELD_DECL + || TREE_CODE (node) == VAR_DECL) + && !excl->variable) + continue; + found = true; /* Print a note? */ diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index e3d1cec40f1..2044efc6997 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2018-02-14 Martin Sebor + + PR c/84108 + * gcc.dg/Wattributes-8.c: New test. + 2018-02-14 Janus Weil PR fortran/84385 diff --git a/gcc/testsuite/gcc.dg/Wattributes-8.c b/gcc/testsuite/gcc.dg/Wattributes-8.c new file mode 100644 index 00000000000..a4b4c00c08f --- /dev/null +++ b/gcc/testsuite/gcc.dg/Wattributes-8.c @@ -0,0 +1,38 @@ +/* PR middle-end/84108 - incorrect -Wattributes warning for packed/aligned + conflict on struct members + { dg-do compile } + { dg-options "-Wall -Wattributes" } */ + +#define ATTR(list) __attribute__ (list) +#define ASSERT(e) _Static_assert (e, #e) + +/* GCC is inconsistent in how it treats attribute aligned between + variable and member declarations. Attribute aligned alone is + sufficient to reduce a variable's alignment requirement but + the attribute must be paired with packed to have the same + effect on a member. Worse, declaring a variable both aligned + and packed emits a warning. */ + +/* Avoid exercising this since emitting a warning for these given + the requirement for members seems like a misfeature: + int a ATTR ((packed, aligned (2))); // -Wattributes + int b ATTR ((aligned (2), packed)); // -Wattributes + ASSERT (_Alignof (a) == 2); + ASSERT (_Alignof (b) == 2); */ + +int c ATTR ((aligned (2))); // okay (reduces alignment) +ASSERT (_Alignof (c) == 2); + +struct { + int a ATTR ((packed, aligned (2))); /* { dg-bogus "\\\[-Wattributes" } */ + int b ATTR ((aligned (2), packed)); /* { dg-bogus "\\\[-Wattributes" } */ + + /* Avoid exercising this since the attribute has no effect yet + there is no warning. + int c ATTR ((aligned (2))); // missing warning? */ +} s; + +ASSERT (_Alignof (s.a) == 2); +ASSERT (_Alignof (s.b) == 2); + +/* ASSERT (_Alignof (s.c) == 4); */ -- cgit v1.2.1 From d19c7e92ee2bd90d45c3632f280eef4de8bd5b83 Mon Sep 17 00:00:00 2001 From: carll Date: Wed, 14 Feb 2018 22:12:04 +0000 Subject: gcc/testsuite/ChangeLog: 2018-02-14 Carl Love * gcc.target/powerpc/builtins-4-int128-runnable.c (dg-require-effective-target): Change vsx_hw to p8vector_hw. (dg-options): Change -maltivec -mvsx to -mpower8-vector. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@257675 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/gcc.target/powerpc/builtins-4-int128-runnable.c | 4 ++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 2044efc6997..e769dd5647b 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2018-02-14 Carl Love + * gcc.target/powerpc/builtins-4-int128-runnable.c + (dg-require-effective-target): Change vsx_hw to p8vector_hw. + (dg-options): Change -maltivec -mvsx to -mpower8-vector. + 2018-02-14 Martin Sebor PR c/84108 diff --git a/gcc/testsuite/gcc.target/powerpc/builtins-4-int128-runnable.c b/gcc/testsuite/gcc.target/powerpc/builtins-4-int128-runnable.c index 162e26781a9..4f4e7a9ee5e 100644 --- a/gcc/testsuite/gcc.target/powerpc/builtins-4-int128-runnable.c +++ b/gcc/testsuite/gcc.target/powerpc/builtins-4-int128-runnable.c @@ -1,7 +1,7 @@ /* { dg-do run } */ /* { dg-require-effective-target int128 } */ -/* { dg-require-effective-target vsx_hw } */ -/* { dg-options "-maltivec -mvsx" } */ +/* { dg-require-effective-target p8vector_hw } */ +/* { dg-options "-mpower8-vector" } */ #include #include // vector -- cgit v1.2.1 From 484051f7fd0513e33c839394ee1ca41b5ee40b31 Mon Sep 17 00:00:00 2001 From: msebor Date: Wed, 14 Feb 2018 23:22:15 +0000 Subject: PR tree-optimization/83698 - bogus offset in -Wrestrict messages for strcat of unknown strings gcc/ChangeLog: PR tree-optimization/83698 * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): For arrays constrain the offset range to their bounds. (builtin_access::strcat_overlap): Adjust the bounds of overlap offset. (builtin_access::overlap): Avoid setting the size of overlap if it's already been set. (maybe_diag_overlap): Also consider arrays when deciding what values of offsets to include in diagnostics. gcc/testsuite/ChangeLog: PR tree-optimization/83698 * gcc.dg/Wrestrict-7.c: New test. * c-c++-common/Wrestrict.c: Adjust expected values for strcat. * gcc.target/i386/chkp-stropt-17.c: Same. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@257676 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 11 +++++ gcc/gimple-ssa-warn-restrict.c | 60 +++++++++++++++++++++----- gcc/testsuite/ChangeLog | 7 +++ gcc/testsuite/c-c++-common/Wrestrict.c | 11 +++-- gcc/testsuite/gcc.dg/Wrestrict-7.c | 51 ++++++++++++++++++++++ gcc/testsuite/gcc.target/i386/chkp-stropt-17.c | 2 +- 6 files changed, 127 insertions(+), 15 deletions(-) create mode 100644 gcc/testsuite/gcc.dg/Wrestrict-7.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index e16acd45413..6b092077979 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,14 @@ +2018-02-14 Martin Sebor + + PR tree-optimization/83698 + * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): For + arrays constrain the offset range to their bounds. + (builtin_access::strcat_overlap): Adjust the bounds of overlap offset. + (builtin_access::overlap): Avoid setting the size of overlap if it's + already been set. + (maybe_diag_overlap): Also consider arrays when deciding what values + of offsets to include in diagnostics. + 2018-02-14 Martin Sebor PR c/84108 diff --git a/gcc/gimple-ssa-warn-restrict.c b/gcc/gimple-ssa-warn-restrict.c index 5b3b9691313..d0e18541275 100644 --- a/gcc/gimple-ssa-warn-restrict.c +++ b/gcc/gimple-ssa-warn-restrict.c @@ -375,6 +375,14 @@ builtin_memref::builtin_memref (tree expr, tree size) } } + if (DECL_P (base) && TREE_CODE (TREE_TYPE (base)) == ARRAY_TYPE) + { + /* For array objects, where a negative offset wouldn't make + sense, use zero instead if the upper bound is positive. */ + if (offrange[0] < 0 && offrange[1] > 0) + offrange[0] = 0; + } + if (size) { tree range[2]; @@ -1070,14 +1078,35 @@ builtin_access::strcat_overlap () return false; /* When strcat overlap is certain it is always a single byte: - the terminatinn NUL, regardless of offsets and sizes. When + the terminating NUL, regardless of offsets and sizes. When overlap is only possible its range is [0, 1]. */ acs.ovlsiz[0] = dstref->sizrange[0] == dstref->sizrange[1] ? 1 : 0; acs.ovlsiz[1] = 1; - acs.ovloff[0] = (dstref->sizrange[0] + dstref->offrange[0]).to_shwi (); - acs.ovloff[1] = (dstref->sizrange[1] + dstref->offrange[1]).to_shwi (); - acs.sizrange[0] = wi::smax (acs.dstsiz[0], srcref->sizrange[0]).to_shwi (); + offset_int endoff = dstref->offrange[0] + dstref->sizrange[0]; + if (endoff <= srcref->offrange[0]) + acs.ovloff[0] = wi::smin (maxobjsize, srcref->offrange[0]).to_shwi (); + else + acs.ovloff[0] = wi::smin (maxobjsize, endoff).to_shwi (); + + acs.sizrange[0] = wi::smax (wi::abs (endoff - srcref->offrange[0]) + 1, + srcref->sizrange[0]).to_shwi (); + if (dstref->offrange[0] == dstref->offrange[1]) + { + if (srcref->offrange[0] == srcref->offrange[1]) + acs.ovloff[1] = acs.ovloff[0]; + else + acs.ovloff[1] + = wi::smin (maxobjsize, + srcref->offrange[1] + srcref->sizrange[1]).to_shwi (); + } + else + acs.ovloff[1] + = wi::smin (maxobjsize, + dstref->offrange[1] + dstref->sizrange[1]).to_shwi (); + + if (acs.sizrange[0] == 0) + acs.sizrange[0] = 1; acs.sizrange[1] = wi::smax (acs.dstsiz[1], srcref->sizrange[1]).to_shwi (); return true; } @@ -1215,8 +1244,12 @@ builtin_access::overlap () /* Call the appropriate function to determine the overlap. */ if ((this->*detect_overlap) ()) { - sizrange[0] = wi::smax (acs.dstsiz[0], srcref->sizrange[0]).to_shwi (); - sizrange[1] = wi::smax (acs.dstsiz[1], srcref->sizrange[1]).to_shwi (); + if (!sizrange[1]) + { + /* Unless the access size range has already been set, do so here. */ + sizrange[0] = wi::smax (acs.dstsiz[0], srcref->sizrange[0]).to_shwi (); + sizrange[1] = wi::smax (acs.dstsiz[1], srcref->sizrange[1]).to_shwi (); + } return true; } @@ -1392,10 +1425,17 @@ maybe_diag_overlap (location_t loc, gcall *call, builtin_access &acs) /* Use more concise wording when one of the offsets is unbounded to avoid confusing the user with large and mostly meaningless numbers. */ - bool open_range = ((dstref.offrange[0] == -maxobjsize - 1 - && dstref.offrange[1] == maxobjsize) - || (srcref.offrange[0] == -maxobjsize - 1 - && srcref.offrange[1] == maxobjsize)); + bool open_range; + if (DECL_P (dstref.base) && TREE_CODE (TREE_TYPE (dstref.base)) == ARRAY_TYPE) + open_range = ((dstref.offrange[0] == 0 + && dstref.offrange[1] == maxobjsize) + || (srcref.offrange[0] == 0 + && srcref.offrange[1] == maxobjsize)); + else + open_range = ((dstref.offrange[0] == -maxobjsize - 1 + && dstref.offrange[1] == maxobjsize) + || (srcref.offrange[0] == -maxobjsize - 1 + && srcref.offrange[1] == maxobjsize)); if (sizrange[0] == sizrange[1] || sizrange[1] == 1) { diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index e769dd5647b..431af1a9008 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -3,6 +3,13 @@ (dg-require-effective-target): Change vsx_hw to p8vector_hw. (dg-options): Change -maltivec -mvsx to -mpower8-vector. +2018-02-14 Martin Sebor + + PR tree-optimization/83698 + * gcc.dg/Wrestrict-7.c: New test. + * c-c++-common/Wrestrict.c: Adjust expected values for strcat. + * gcc.target/i386/chkp-stropt-17.c: Same. + 2018-02-14 Martin Sebor PR c/84108 diff --git a/gcc/testsuite/c-c++-common/Wrestrict.c b/gcc/testsuite/c-c++-common/Wrestrict.c index 671497ea3e6..72d9a4716fb 100644 --- a/gcc/testsuite/c-c++-common/Wrestrict.c +++ b/gcc/testsuite/c-c++-common/Wrestrict.c @@ -616,10 +616,13 @@ void test_strcat_var (char *d, const char *s) } while (0) T (d, d); /* { dg-warning "source argument is the same as destination" "strcat" } */ - T (d, d + 1); /* { dg-warning "accessing 0 or more bytes at offsets 0 and 1 may overlap 1 byte" "strcat" } */ - T (d, d + 2); /* { dg-warning "accessing 0 or more bytes at offsets 0 and 2 may overlap 1 byte" "strcat" } */ - T (d, d + 999); /* { dg-warning "accessing 0 or more bytes at offsets 0 and 999 may overlap 1 byte" "strcat" } */ - T (d, d + -99); /* { dg-warning "accessing 0 or more bytes at offsets 0 and -99 may overlap 1 byte" "strcat" } */ + T (d, d + 1); /* { dg-warning "accessing 2 or more bytes at offsets 0 and 1 may overlap 1 byte" "strcat" } */ + T (d, d + 2); /* { dg-warning "accessing 3 or more bytes at offsets 0 and 2 may overlap 1 byte at offset 2" "strcat" } */ + T (d, d + 999); /* { dg-warning "accessing 1000 or more bytes at offsets 0 and 999 may overlap 1 byte at offset 999" "strcat" } */ + + /* The source string must be at least 100 bytes in length for the copy + below to overlap. */ + T (d, d + -99); /* { dg-warning "accessing 100 or more bytes at offsets 0 and -99 may overlap 1 byte" "strcat" } */ size_t n = unsigned_value (); diff --git a/gcc/testsuite/gcc.dg/Wrestrict-7.c b/gcc/testsuite/gcc.dg/Wrestrict-7.c new file mode 100644 index 00000000000..5be5e0bd051 --- /dev/null +++ b/gcc/testsuite/gcc.dg/Wrestrict-7.c @@ -0,0 +1,51 @@ +/* PR tree-optimization/83698 - bogus offset in -Wrestrict messages for + strcat of unknown strings + { dg-do compile } + { dg-options "-O2 -Wrestrict -ftrack-macro-expansion=0" } */ + +extern char* strcat (char*, const char*); + +void sink (char*); + +#define T(d, s) sink (strcat (d, s)) + +extern char arr[]; + + +void test_strcat_array_cst_offset (void) +{ + T (arr, arr + 1); /* { dg-warning "accessing 2 or more bytes at offsets 0 and 1 may overlap 1 byte at offset 1" } */ + T (arr, arr + 2); /* { dg-warning "accessing 3 or more bytes at offsets 0 and 2 may overlap 1 byte at offset 2" } */ + T (arr, arr + 13); /* { dg-warning "accessing 14 or more bytes at offsets 0 and 13 may overlap 1 byte at offset 13" } */ + + T (arr + 1, arr); /* { dg-warning "accessing 2 or more bytes at offsets 1 and 0 may overlap 1 byte at offset 1" } */ + T (arr + 17, arr + 11); /* { dg-warning "accessing 7 or more bytes at offsets 17 and 11 may overlap 1 byte at offset 17" } */ + T (arr + 36, arr + 20); /* { dg-warning "accessing 17 or more bytes at offsets 36 and 20 may overlap 1 byte at offset 36" } */ +} + +void test_strcat_ptr_cst_offset (char *d) +{ + T (d - 12, d + 34); /* { dg-warning "accessing 47 or more bytes at offsets -12 and 34 may overlap 1 byte at offset 34" } */ + T (d + 12, d + 34); /* { dg-warning "accessing 23 or more bytes at offsets 12 and 34 may overlap 1 byte at offset 34" } */ + T (d + 20, d + 36); /* { dg-warning "accessing 17 or more bytes at offsets 20 and 36 may overlap 1 byte at offset 36" } */ +} + +void test_strcat_array_var_offset (int i, int j) +{ + T (arr + i, arr); /* { dg-warning "accessing 1 or more bytes at offsets \\\[0, \[0-9\]+] and 0 may overlap 1 byte at offset \\\[0, \[0-9\]+]" } */ + T (arr, arr + j); /* { dg-warning "accessing 1 or more bytes at offsets 0 and \\\[0, \[0-9\]+] may overlap 1 byte at offset \\\[0, \[0-9\]+]" } */ + T (arr + i, arr + j); /* { dg-warning "accessing 1 or more bytes at offsets \\\[0, \[0-9\]+] and \\\[0, \[0-9\]+] may overlap 1 byte at offset \\\[0, \[0-9\]+]" } */ + + T (arr + i, arr + 5); /* { dg-warning "accessing 6 or more bytes at offsets \\\[0, \[0-9\]+] and 5 may overlap 1 byte at offset \\\[5, \[0-9\]+]" } */ + T (arr + 7, arr + j); /* { dg-warning "accessing 8 or more bytes at offsets 7 and \\\[0, \[0-9\]+] may overlap 1 byte at offset \\\[7, \[0-9\]+]" } */ +} + +void test_strcat_ptr_var_offset (char *d, int i, int j) +{ + T (d + i, d); /* { dg-warning "accessing \[0-9\]+ or more bytes at offsets \\\[-\[0-9\]+, \[0-9\]+] and 0 may overlap 1 byte at offset \\\[0, \[0-9\]+]" } */ + T (d, d + j); /* { dg-warning "accessing \[0-9\]+ or more bytes at offsets 0 and \\\[-\[0-9\]+, \[0-9\]+] may overlap 1 byte at offset \\\[0, \[0-9\]+]" } */ + T (d + i, d + j); /* { dg-warning "accessing 1 or more bytes at offsets \\\[-\[0-9\]+, \[0-9\]+] and \\\[-\[0-9\]+, \[0-9\]+] may overlap 1 byte at offset \\\[-\[0-9\]+, \[0-9\]+]" } */ + + T (d + i, d + 3); /* { dg-warning "accessing \[0-9\]+ or more bytes at offsets \\\[-\[0-9\]+, \[0-9\]+] and 3 may overlap 1 byte at offset \\\[3, \[0-9\]+]" } */ + T (d + 9, d + j); /* { dg-warning "accessing \[0-9\]+ or more bytes at offsets 9 and \\\[-\[0-9\]+, \[0-9\]+] may overlap 1 byte at offset \\\[9, \[0-9\]+]" } */ +} diff --git a/gcc/testsuite/gcc.target/i386/chkp-stropt-17.c b/gcc/testsuite/gcc.target/i386/chkp-stropt-17.c index 1be4922fd53..faf304c3303 100644 --- a/gcc/testsuite/gcc.target/i386/chkp-stropt-17.c +++ b/gcc/testsuite/gcc.target/i386/chkp-stropt-17.c @@ -51,7 +51,7 @@ void test_strcpy (void) void test_strcat (int n) { - strcat (a, a + 3); /* { dg-warning ".strcat\.chkp. accessing 0 or more bytes at offsets 0 and 3 may overlap 1 byte" } */ + strcat (a, a + 3); /* { dg-warning ".strcat\.chkp. accessing 4 or more bytes at offsets 0 and 3 may overlap 1 byte at offset 3" } */ } void test_strncat (int n) -- cgit v1.2.1 From b0d317f3da7a3f7b6bd3aced2ac0f5bd59d4b2e7 Mon Sep 17 00:00:00 2001 From: gccadmin Date: Thu, 15 Feb 2018 00:16:25 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@257679 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index 1f17468cbe8..1f1bb18bc2e 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20180214 +20180215 -- cgit v1.2.1 From bc37679f1e7b2a24bcb191cd84baf5efaad14625 Mon Sep 17 00:00:00 2001 From: msebor Date: Thu, 15 Feb 2018 00:47:22 +0000 Subject: gcc/ChangeLog: 2018-02-14 Indu Bhagat * doc/invoke.texi: Correct -Wformat-overflow code sample. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@257680 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 4 ++++ gcc/doc/invoke.texi | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 6b092077979..29996a9abe0 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,7 @@ +2018-02-14 Indu Bhagat + + * doc/invoke.texi: Correct -Wformat-overflow code sample. + 2018-02-14 Martin Sebor PR tree-optimization/83698 diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi index f0b11a01354..bcffc8c1098 100644 --- a/gcc/doc/invoke.texi +++ b/gcc/doc/invoke.texi @@ -4184,7 +4184,7 @@ warning, though it may not be sufficient to avoid the overflow. @smallexample void f (int a, int b) @{ - char buf [12]; + char buf [13]; sprintf (buf, "a = %i, b = %i\n", a, b); @} @end smallexample -- cgit v1.2.1 From 26fbe883ee82c31d7651ecb539d0f92c5487c450 Mon Sep 17 00:00:00 2001 From: wilson Date: Thu, 15 Feb 2018 01:14:23 +0000 Subject: RISC-V: Change sp subtracts so prologue stores can compress. gcc/ * config/riscv/riscv.c (riscv_first_stack_step): Move locals after first SMALL_OPERAND check. New local min_second_step. Move assert to where locals are set. Add TARGET_RVC support. * config/riscv/riscv.h (C_SxSP_BITS, SWSP_REACH, SDSP_REACH): New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@257681 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 7 +++++++ gcc/config/riscv/riscv.c | 30 ++++++++++++++++++++++++------ gcc/config/riscv/riscv.h | 4 ++++ 3 files changed, 35 insertions(+), 6 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 29996a9abe0..7c30a1ed0db 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2018-02-14 Jim Wilson + + * config/riscv/riscv.c (riscv_first_stack_step): Move locals after + first SMALL_OPERAND check. New local min_second_step. Move assert + to where locals are set. Add TARGET_RVC support. + * config/riscv/riscv.h (C_SxSP_BITS, SWSP_REACH, SDSP_REACH): New. + 2018-02-14 Indu Bhagat * doc/invoke.texi: Correct -Wformat-overflow code sample. diff --git a/gcc/config/riscv/riscv.c b/gcc/config/riscv/riscv.c index 4ef7a1774c4..c38f6c394d5 100644 --- a/gcc/config/riscv/riscv.c +++ b/gcc/config/riscv/riscv.c @@ -3495,25 +3495,43 @@ riscv_output_gpr_save (unsigned mask) /* For stack frames that can't be allocated with a single ADDI instruction, compute the best value to initially allocate. It must at a minimum - allocate enough space to spill the callee-saved registers. */ + allocate enough space to spill the callee-saved registers. If TARGET_RVC, + try to pick a value that will allow compression of the register saves + without adding extra instructions. */ static HOST_WIDE_INT riscv_first_stack_step (struct riscv_frame_info *frame) { - HOST_WIDE_INT min_first_step = frame->total_size - frame->fp_sp_offset; - HOST_WIDE_INT max_first_step = IMM_REACH / 2 - STACK_BOUNDARY / 8; - if (SMALL_OPERAND (frame->total_size)) return frame->total_size; + HOST_WIDE_INT min_first_step = frame->total_size - frame->fp_sp_offset; + HOST_WIDE_INT max_first_step = IMM_REACH / 2 - STACK_BOUNDARY / 8; + HOST_WIDE_INT min_second_step = frame->total_size - max_first_step; + gcc_assert (min_first_step <= max_first_step); + /* As an optimization, use the least-significant bits of the total frame size, so that the second adjustment step is just LUI + ADD. */ - if (!SMALL_OPERAND (frame->total_size - max_first_step) + if (!SMALL_OPERAND (min_second_step) && frame->total_size % IMM_REACH < IMM_REACH / 2 && frame->total_size % IMM_REACH >= min_first_step) return frame->total_size % IMM_REACH; - gcc_assert (min_first_step <= max_first_step); + if (TARGET_RVC) + { + /* If we need two subtracts, and one is small enough to allow compressed + loads and stores, then put that one first. */ + if (IN_RANGE (min_second_step, 0, + (TARGET_64BIT ? SDSP_REACH : SWSP_REACH))) + return MAX (min_second_step, min_first_step); + + /* If we need LUI + ADDI + ADD for the second adjustment step, then start + with the minimum first step, so that we can get compressed loads and + stores. */ + else if (!SMALL_OPERAND (min_second_step)) + return min_first_step; + } + return max_first_step; } diff --git a/gcc/config/riscv/riscv.h b/gcc/config/riscv/riscv.h index 1c1c3431119..6144e267727 100644 --- a/gcc/config/riscv/riscv.h +++ b/gcc/config/riscv/riscv.h @@ -891,9 +891,13 @@ extern unsigned riscv_stack_boundary; #define SHIFT_RS1 15 #define SHIFT_IMM 20 #define IMM_BITS 12 +#define C_SxSP_BITS 6 #define IMM_REACH (1LL << IMM_BITS) #define CONST_HIGH_PART(VALUE) (((VALUE) + (IMM_REACH/2)) & ~(IMM_REACH-1)) #define CONST_LOW_PART(VALUE) ((VALUE) - CONST_HIGH_PART (VALUE)) +#define SWSP_REACH (4LL << C_SxSP_BITS) +#define SDSP_REACH (8LL << C_SxSP_BITS) + #endif /* ! GCC_RISCV_H */ -- cgit v1.2.1 From 7db25d1825c83b09f686c44786727b4afea887ae Mon Sep 17 00:00:00 2001 From: jason Date: Thu, 15 Feb 2018 05:58:35 +0000 Subject: * libcpp/macro.c: Fix typos. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@257682 138bc75d-0d04-0410-961f-82ee72b054a4 --- libcpp/macro.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/libcpp/macro.c b/libcpp/macro.c index c5f3ffde722..f994ac584cc 100644 --- a/libcpp/macro.c +++ b/libcpp/macro.c @@ -51,7 +51,7 @@ struct macro_arg enum macro_arg_token_kind { MACRO_ARG_TOKEN_NORMAL, /* This is a macro argument token that got transformed into a string - litteral, e.g. #foo. */ + literal, e.g. #foo. */ MACRO_ARG_TOKEN_STRINGIFIED, /* This is a token resulting from the expansion of a macro argument that was itself a macro. */ @@ -1819,9 +1819,9 @@ replace_args (cpp_reader *pfile, cpp_hashnode *node, cpp_macro *macro, multiple tokens. This is to save memory at the expense of accuracy. - Suppose we have #define SQARE(A) A * A + Suppose we have #define SQUARE(A) A * A - And then we do SQARE(2+3) + And then we do SQUARE(2+3) Then the tokens 2, +, 3, will have the same location, saying they come from the expansion of the argument A. */ @@ -1962,9 +1962,9 @@ replace_args (cpp_reader *pfile, cpp_hashnode *node, cpp_macro *macro, save extra memory while tracking macro expansion locations. So in that case here is what we do: - Suppose we have #define SQARE(A) A * A + Suppose we have #define SQUARE(A) A * A - And then we do SQARE(2+3) + And then we do SQUARE(2+3) Then the tokens 2, +, 3, will have the same location, saying they come from the expansion of the argument @@ -1972,9 +1972,9 @@ replace_args (cpp_reader *pfile, cpp_hashnode *node, cpp_macro *macro, So that means we are going to ignore the COUNT tokens resulting from the expansion of the current macro - arugment. In other words all the ARG_TOKENS_COUNT tokens + argument. In other words all the ARG_TOKENS_COUNT tokens resulting from the expansion of the macro argument will - have the index I. Normally, each of those token should + have the index I. Normally, each of those tokens should have index I+J. */ unsigned token_index = i; unsigned index; @@ -1992,8 +1992,8 @@ replace_args (cpp_reader *pfile, cpp_hashnode *node, cpp_macro *macro, /* With a non-empty argument on the LHS of ##, the last token should be flagged PASTE_LEFT. */ if (src->flags & PASTE_LEFT) - paste_flag = - (const cpp_token **) tokens_buff_last_token_ptr (buff); + paste_flag + = (const cpp_token **) tokens_buff_last_token_ptr (buff); } else if (CPP_PEDANTIC (pfile) && ! CPP_OPTION (pfile, c99) && ! macro->syshdr && ! cpp_in_system_header (pfile)) -- cgit v1.2.1 From 50e96fc38158a7b8eb6cfefa270cc3262e08d5fc Mon Sep 17 00:00:00 2001 From: jakub Date: Thu, 15 Feb 2018 11:17:05 +0000 Subject: PR tree-optimization/84334 * match.pd ((A +- CST1) +- CST2 -> A + CST3): If A is also a CONSTANT_CLASS_P, punt. * gcc.dg/pr84334.c: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@257683 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 7 +++++++ gcc/match.pd | 9 ++++++--- gcc/testsuite/ChangeLog | 9 ++++++++- gcc/testsuite/gcc.dg/pr84334.c | 12 ++++++++++++ 4 files changed, 33 insertions(+), 4 deletions(-) create mode 100644 gcc/testsuite/gcc.dg/pr84334.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 7c30a1ed0db..05b77100138 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2018-02-15 Jakub Jelinek + + PR tree-optimization/84334 + * match.pd ((A +- CST1) +- CST2 -> A + CST3): If A is + also a CONSTANT_CLASS_P, punt. + 2018-02-14 Jim Wilson * config/riscv/riscv.c (riscv_first_stack_step): Move locals after @@ -2336,6 +2342,7 @@ * config/aarch64/predicates.md (Uti): Add new constraint. 2018-01-17 Carl Love + * config/rs6000/vsx.md (define_expand xl_len_r, define_expand stxvl, define_expand *stxvl): Add match_dup argument. (define_insn): Add, match_dup 1 argument to define_insn stxvll and diff --git a/gcc/match.pd b/gcc/match.pd index f7597110c4b..4452b58caed 100644 --- a/gcc/match.pd +++ b/gcc/match.pd @@ -1733,9 +1733,12 @@ DEFINE_INT_AND_FLOAT_ROUND_FN (RINT) CONSTANT_CLASS_P@2) /* If one of the types wraps, use that one. */ (if (!ANY_INTEGRAL_TYPE_P (type) || TYPE_OVERFLOW_WRAPS (type)) - (if (outer_op == PLUS_EXPR) - (plus (view_convert @0) (inner_op @2 (view_convert @1))) - (minus (view_convert @0) (neg_inner_op @2 (view_convert @1)))) + /* If all 3 captures are CONSTANT_CLASS_P, punt, as we might recurse + forever if something doesn't simplify into a constant. */ + (if (!CONSTANT_CLASS_P (@0)) + (if (outer_op == PLUS_EXPR) + (plus (view_convert @0) (inner_op @2 (view_convert @1))) + (minus (view_convert @0) (neg_inner_op @2 (view_convert @1))))) (if (!ANY_INTEGRAL_TYPE_P (TREE_TYPE (@0)) || TYPE_OVERFLOW_WRAPS (TREE_TYPE (@0))) (if (outer_op == PLUS_EXPR) diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 431af1a9008..2ac6e7b0dfa 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,4 +1,10 @@ +2018-02-15 Jakub Jelinek + + PR tree-optimization/84334 + * gcc.dg/pr84334.c: New test. + 2018-02-14 Carl Love + * gcc.target/powerpc/builtins-4-int128-runnable.c (dg-require-effective-target): Change vsx_hw to p8vector_hw. (dg-options): Change -maltivec -mvsx to -mpower8-vector. @@ -1558,6 +1564,7 @@ * gcc.target/powerpc/pr83862.c: New test. 2018-01-22 Carl Love + * gcc.target/powerpc/powerpc.exp: Add torture tests for builtins-4-runnable.c, builtins-6-runnable.c, builtins-5-p9-runnable.c, builtins-6-p9-runnable.c. @@ -3617,7 +3624,7 @@ PR c++/83734 * g++.dg/cpp0x/pr83734.C: New test. -2018-01-09 Carl Love +2018-01-09 Carl Love * gcc.target/powerpc/builtins-1.c (main): Add tests for vec_mergee and vec_mergeo builtins with float, double, long long, unsigned long long, diff --git a/gcc/testsuite/gcc.dg/pr84334.c b/gcc/testsuite/gcc.dg/pr84334.c new file mode 100644 index 00000000000..8cfde69bd82 --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr84334.c @@ -0,0 +1,12 @@ +/* PR tree-optimization/84334 */ +/* { dg-do compile } */ +/* { dg-options "-Ofast -frounding-math" } */ + +float +foo (void) +{ + float a = 9.999999974752427078783512115478515625e-7f; + float b = 1.999999994950485415756702423095703125e-6f; + float c = 4.999999873689375817775726318359375e-6f; + return a + b + c; +} -- cgit v1.2.1 From 7ecf840976dd8beb2538bab904ae844c33bf498e Mon Sep 17 00:00:00 2001 From: jakub Date: Thu, 15 Feb 2018 11:18:47 +0000 Subject: PR tree-optimization/84383 * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Don't look at dstoff nor call operand_equal_p if dstbase is NULL. * gcc.c-torture/compile/pr84383.c: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@257684 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 4 ++++ gcc/testsuite/ChangeLog | 3 +++ gcc/testsuite/gcc.c-torture/compile/pr84383.c | 14 ++++++++++++++ gcc/tree-ssa-strlen.c | 1 + 4 files changed, 22 insertions(+) create mode 100644 gcc/testsuite/gcc.c-torture/compile/pr84383.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 05b77100138..2768ada22b7 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,9 @@ 2018-02-15 Jakub Jelinek + PR tree-optimization/84383 + * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Don't look at + dstoff nor call operand_equal_p if dstbase is NULL. + PR tree-optimization/84334 * match.pd ((A +- CST1) +- CST2 -> A + CST3): If A is also a CONSTANT_CLASS_P, punt. diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 2ac6e7b0dfa..c9f53d80b68 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,5 +1,8 @@ 2018-02-15 Jakub Jelinek + PR tree-optimization/84383 + * gcc.c-torture/compile/pr84383.c: New test. + PR tree-optimization/84334 * gcc.dg/pr84334.c: New test. diff --git a/gcc/testsuite/gcc.c-torture/compile/pr84383.c b/gcc/testsuite/gcc.c-torture/compile/pr84383.c new file mode 100644 index 00000000000..b46f7819b74 --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/compile/pr84383.c @@ -0,0 +1,14 @@ +/* PR tree-optimization/84383 */ + +struct S { char *s; }; +void bar (struct S *); + +void +foo (int a, char *b) +{ + struct S c[4]; + bar (c); + __builtin_strncpy (c[a].s, b, 32); + c[a].s[31] = '\0'; + bar (c); +} diff --git a/gcc/tree-ssa-strlen.c b/gcc/tree-ssa-strlen.c index 94ed2bedc03..09ffa154439 100644 --- a/gcc/tree-ssa-strlen.c +++ b/gcc/tree-ssa-strlen.c @@ -1878,6 +1878,7 @@ maybe_diag_stxncpy_trunc (gimple_stmt_iterator gsi, tree src, tree cnt) poly_int64 lhsoff; tree lhsbase = get_addr_base_and_unit_offset (lhs, &lhsoff); if (lhsbase + && dstbase && known_eq (dstoff, lhsoff) && operand_equal_p (dstbase, lhsbase, 0)) return false; -- cgit v1.2.1 From 4314139b0887021bbe5707ed818b41dac284b8fe Mon Sep 17 00:00:00 2001 From: jakub Date: Thu, 15 Feb 2018 11:32:27 +0000 Subject: PR other/82368 * elf.c (SHT_PROGBITS): Undefine and define. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@257685 138bc75d-0d04-0410-961f-82ee72b054a4 --- libbacktrace/ChangeLog | 5 +++++ libbacktrace/elf.c | 2 ++ 2 files changed, 7 insertions(+) diff --git a/libbacktrace/ChangeLog b/libbacktrace/ChangeLog index 60e67a72de7..323ac94165c 100644 --- a/libbacktrace/ChangeLog +++ b/libbacktrace/ChangeLog @@ -1,3 +1,8 @@ +2018-02-15 Jakub Jelinek + + PR other/82368 + * elf.c (SHT_PROGBITS): Undefine and define. + 2018-02-14 Jakub Jelinek PR other/82368 diff --git a/libbacktrace/elf.c b/libbacktrace/elf.c index 8ff3c47320e..19da5a97b23 100644 --- a/libbacktrace/elf.c +++ b/libbacktrace/elf.c @@ -170,6 +170,7 @@ dl_iterate_phdr (int (*callback) (struct dl_phdr_info *, #undef SHN_LORESERVE #undef SHN_XINDEX #undef SHN_UNDEF +#undef SHT_PROGBITS #undef SHT_SYMTAB #undef SHT_STRTAB #undef SHT_DYNSYM @@ -267,6 +268,7 @@ typedef struct { #define SHN_LORESERVE 0xFF00 /* Begin range of reserved indices */ #define SHN_XINDEX 0xFFFF /* Section index is held elsewhere */ +#define SHT_PROGBITS 1 #define SHT_SYMTAB 2 #define SHT_STRTAB 3 #define SHT_DYNSYM 11 -- cgit v1.2.1 From a8c4758290a922d6755478be9bcf080d707b60a9 Mon Sep 17 00:00:00 2001 From: vries Date: Thu, 15 Feb 2018 13:05:37 +0000 Subject: [testsuite] Require et indirect_jumps for pr84136.c 2018-02-15 Tom de Vries * gcc.c-torture/compile/pr84136.c: Require effective target indirect_jumps. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@257686 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/gcc.c-torture/compile/pr84136.c | 2 ++ 2 files changed, 7 insertions(+) diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index c9f53d80b68..6f8326666ec 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2018-02-15 Tom de Vries + + * gcc.c-torture/compile/pr84136.c: Require effective target + indirect_jumps. + 2018-02-15 Jakub Jelinek PR tree-optimization/84383 diff --git a/gcc/testsuite/gcc.c-torture/compile/pr84136.c b/gcc/testsuite/gcc.c-torture/compile/pr84136.c index 0a70e4e3203..aa6afb8b02e 100644 --- a/gcc/testsuite/gcc.c-torture/compile/pr84136.c +++ b/gcc/testsuite/gcc.c-torture/compile/pr84136.c @@ -1,3 +1,5 @@ +/* { dg-require-effective-target indirect_jumps } */ + void* a; void foo() { -- cgit v1.2.1 From c01ad1819c41f6cd74a1581903539360b4cfb0cf Mon Sep 17 00:00:00 2001 From: vries Date: Thu, 15 Feb 2018 13:05:57 +0000 Subject: [testsuite] Require et alloca for Wstringop-overflow-3.c 2018-02-15 Tom de Vries * gcc.dg/Wstringop-overflow-3.c: Require effective target alloca. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@257687 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/testsuite/ChangeLog | 4 ++++ gcc/testsuite/gcc.dg/Wstringop-overflow-3.c | 1 + 2 files changed, 5 insertions(+) diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 6f8326666ec..3d6da2a9ca4 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2018-02-15 Tom de Vries + + * gcc.dg/Wstringop-overflow-3.c: Require effective target alloca. + 2018-02-15 Tom de Vries * gcc.c-torture/compile/pr84136.c: Require effective target diff --git a/gcc/testsuite/gcc.dg/Wstringop-overflow-3.c b/gcc/testsuite/gcc.dg/Wstringop-overflow-3.c index 590184461a9..6c8cbf3898e 100644 --- a/gcc/testsuite/gcc.dg/Wstringop-overflow-3.c +++ b/gcc/testsuite/gcc.dg/Wstringop-overflow-3.c @@ -1,6 +1,7 @@ /* PR tree-optimization/84238 */ /* { dg-do compile } */ /* { dg-options "-O2" } */ +/* { dg-require-effective-target alloca } */ char a[1]; int b; -- cgit v1.2.1 From 10ab0ab7052d7a8505b7d8056ba52c22c96b78c0 Mon Sep 17 00:00:00 2001 From: acsawdey Date: Thu, 15 Feb 2018 14:26:46 +0000 Subject: Fix my changelog entry for PR target/83758 git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@257690 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 1 + 1 file changed, 1 insertion(+) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 2768ada22b7..3537bd48a69 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1354,6 +1354,7 @@ 2018-01-30 Aaron Sawdey + PR target/83758 * config/rs6000/rs6000.c (rs6000_internal_arg_pointer): Only return a reg rtx. -- cgit v1.2.1 From 7422ddf0036a7410dd7192722719010764c1730c Mon Sep 17 00:00:00 2001 From: jason Date: Thu, 15 Feb 2018 16:54:12 +0000 Subject: PR c++/84314 - ICE with templates and fastcall attribute. * attribs.c (build_type_attribute_qual_variant): Don't clobber TYPE_CANONICAL on an existing type. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@257695 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 6 +++ gcc/attribs.c | 24 ++++++--- gcc/testsuite/g++.dg/ext/attrib55.C | 99 +++++++++++++++++++++++++++++++++++++ 3 files changed, 122 insertions(+), 7 deletions(-) create mode 100644 gcc/testsuite/g++.dg/ext/attrib55.C diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 3537bd48a69..4062532e804 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2018-02-15 Jason Merrill + + PR c++/84314 - ICE with templates and fastcall attribute. + * attribs.c (build_type_attribute_qual_variant): Don't clobber + TYPE_CANONICAL on an existing type. + 2018-02-15 Jakub Jelinek PR tree-optimization/84383 diff --git a/gcc/attribs.c b/gcc/attribs.c index 140863be1d9..caa30b99fc6 100644 --- a/gcc/attribs.c +++ b/gcc/attribs.c @@ -1143,19 +1143,29 @@ build_type_attribute_qual_variant (tree otype, tree attribute, int quals) ttype = (lang_hooks.types.copy_lang_qualifiers (ttype, TYPE_MAIN_VARIANT (otype))); - ntype = build_distinct_type_copy (ttype); + tree dtype = ntype = build_distinct_type_copy (ttype); TYPE_ATTRIBUTES (ntype) = attribute; hashval_t hash = type_hash_canon_hash (ntype); ntype = type_hash_canon (hash, ntype); - /* If the target-dependent attributes make NTYPE different from - its canonical type, we will need to use structural equality - checks for this type. */ - if (TYPE_STRUCTURAL_EQUALITY_P (ttype) - || !comp_type_attributes (ntype, ttype)) - SET_TYPE_STRUCTURAL_EQUALITY (ntype); + if (ntype != dtype) + /* This variant was already in the hash table, don't mess with + TYPE_CANONICAL. */; + else if (TYPE_STRUCTURAL_EQUALITY_P (ttype) + || !comp_type_attributes (ntype, ttype)) + { + /* If the target-dependent attributes make NTYPE different from + its canonical type, we will need to use structural equality + checks for this type. + + But make sure we don't get here for stripping attributes from a + type; the no-attribute type might not need structural comparison, + and it should have been in the hash table already. */ + gcc_assert (attribute); + SET_TYPE_STRUCTURAL_EQUALITY (ntype); + } else if (TYPE_CANONICAL (ntype) == ntype) TYPE_CANONICAL (ntype) = TYPE_CANONICAL (ttype); diff --git a/gcc/testsuite/g++.dg/ext/attrib55.C b/gcc/testsuite/g++.dg/ext/attrib55.C new file mode 100644 index 00000000000..dc0cdc48b7a --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/attrib55.C @@ -0,0 +1,99 @@ +// PR c++/84314 +// { dg-do compile { target { { i?86-*-* x86_64-*-* } && ia32 } } } +// { dg-additional-options "-w -std=c++11" } + +template struct c { static constexpr a d = b; }; +template using e = c; +template struct conditional; +template struct f; +template +struct f : conditional::i {}; +template struct j; +template struct j : conditional<1, h, g>::i {}; +template +struct j : conditional<1, j, g>::i {}; +struct aa : e {}; +template struct m : c {}; +template struct o { + template static c p(int); + typedef decltype(p(0)) i; +}; +template struct ab : o::i {}; +template struct s { typedef int ad; }; +template struct q; +template struct q { typedef a i; }; +template struct conditional { typedef ae i; }; +template struct conditional { + typedef r i; +}; +struct B { + B(int); +}; +template struct af; +template +struct af : af<1, ah...>, B { + typedef af<1, ah...> ai; + ai al(af); + template af(af p1) : ai(al(p1)), B(0) {} +}; +template struct af {}; +template struct ap { + template static constexpr bool ar() { + return j...>::d; + } +}; +template class as : public af<0, ao...> { + typedef af<0, ao...> ai; + +public: + template using au = ap::d, ao...>; + template ::template ar(), bool>::i = true> + as(as an) : ai(an) {} +}; +template as::ad...> ax(ao...); +namespace ay { +class az {}; +} +using ay::az; +namespace ay { +template struct C { typedef ba bc; }; +} +template class bd; +template using bj = f, ab>; +template class bd { + struct F : bj {}; + template using bm = typename q::i; + +public: + template , typename = bm> + bd(bg); + using bn = bf; + bn bo; +}; +template +template +bd::bd(bg) { + bo; +} +typedef long long(__attribute__((fastcall)) bq)(int *); +struct v : ay::C> { + bc bt() { return ax(nullptr, nullptr, az()); } +}; +class w { +public: + int *cc(); +}; +class x : w { + void ce(); +}; +namespace u { +class cf { +public: + static cf cg(int, int *, int, az, bd); +}; +} +void x::ce() { + auto bu = 0; + u::cf::cg(bu, cc(), 1, {}, 0); +} -- cgit v1.2.1 From b78b81a8b090fa62f6bf68cf871099e32707030d Mon Sep 17 00:00:00 2001 From: jason Date: Thu, 15 Feb 2018 17:43:01 +0000 Subject: PR preprocessor/83063 - __VA_OPT__ and ## PR preprocessor/83708 * macro.c (vaopt_state): Reorder m_last_was_paste before m_state. (vaopt_state::vaopt_state): Adjust. (vaopt_state::update_flags): Add BEGIN and END. (vaopt_state::update): Return them. (copy_paste_flag): Factor out of replace_args. (last_token_is): New. (replace_args): Handle BEGIN and END. Avoid padding there. (tokens_buff_last_token_ptr): Return NULL if no tokens. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@257696 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/testsuite/c-c++-common/cpp/va-opt-2.c | 41 +++++++++ gcc/testsuite/c-c++-common/cpp/va-opt-3.c | 94 +++++++++++++++++++++ libcpp/ChangeLog | 14 ++++ libcpp/macro.c | 135 +++++++++++++++++++++++++----- 4 files changed, 261 insertions(+), 23 deletions(-) create mode 100644 gcc/testsuite/c-c++-common/cpp/va-opt-2.c create mode 100644 gcc/testsuite/c-c++-common/cpp/va-opt-3.c diff --git a/gcc/testsuite/c-c++-common/cpp/va-opt-2.c b/gcc/testsuite/c-c++-common/cpp/va-opt-2.c new file mode 100644 index 00000000000..cff2d6cbe5d --- /dev/null +++ b/gcc/testsuite/c-c++-common/cpp/va-opt-2.c @@ -0,0 +1,41 @@ +/* PR preprocessor/83063 */ +/* { dg-do compile } */ +/* { dg-options "-std=gnu99" { target c } } */ +/* { dg-options "-std=c++2a" { target c++ } } */ + +#define f1(...) int b##__VA_OPT__(c) +#define f2(...) int __VA_OPT__(c)##d +#define f3(...) int e##__VA_OPT__() +#define f4(...) int __VA_OPT__()##f +#define f5(...) int g##__VA_OPT__(h)##i +#define f6(...) int j##__VA_OPT__()##k +#define f7(...) int l##__VA_OPT__() +#define f8(...) int __VA_OPT__()##m +#define f9(...) int n##__VA_OPT__()##o +#define f10(x, ...) int x##__VA_OPT__(x) +#define f11(x, ...) int __VA_OPT__(x)##x +#define f12(x, ...) int x##__VA_OPT__(x)##x +f1 (1, 2, 3); +f1 (); +f2 (1, 2); +f2 (); +f3 (1); +f4 (2); +f5 (6, 7); +f5 (); +f6 (8); +f7 (); +f8 (); +f9 (); +f10 (p, 5, 6); +f10 (p); +f11 (q, 7); +f11 (q); +f12 (r, 1, 2, 3, 4, 5); +f12 (r); + +int +main () +{ + return bc + b + cd + d + e + f + ghi + gi + jk + l + m + no + pp + p + qq + q + rrr + rr; +} diff --git a/gcc/testsuite/c-c++-common/cpp/va-opt-3.c b/gcc/testsuite/c-c++-common/cpp/va-opt-3.c new file mode 100644 index 00000000000..1a5a7b2383e --- /dev/null +++ b/gcc/testsuite/c-c++-common/cpp/va-opt-3.c @@ -0,0 +1,94 @@ +/* PR preprocessor/83063 */ +/* PR preprocessor/83708 */ +/* { dg-do preprocess } */ +/* { dg-options "-std=gnu99" { target c } } */ +/* { dg-options "-std=c++2a" { target c++ } } */ + +#define f1(...) b##__VA_OPT__(c) +#define f2(...) __VA_OPT__(c)##d +#define f3(...) e##__VA_OPT__() +#define f4(...) __VA_OPT__()##f +#define f5(...) g##__VA_OPT__(h)##i +#define f6(...) j##__VA_OPT__()##k +#define f7(...) l##__VA_OPT__() +#define f8(...) __VA_OPT__()##m +#define f9(...) n##__VA_OPT__()##o +#define f10(x, ...) x##__VA_OPT__(x) +#define f11(x, ...) __VA_OPT__(x)##x +#define f12(x, ...) x##__VA_OPT__(x)##x +#define f13(...) __VA_OPT__(a)__VA_OPT__(b)c +#define f14(a, b, c, ...) __VA_OPT__(a)__VA_OPT__(b)c +#define f15(a, b, c, ...) __VA_OPT__(a b)__VA_OPT__(b c)a/**/__VA_OPT__(c a)a +#define m1 ( +#define f16() f17 m1 ) +#define f17() f18 m1 ) +#define f18() m2 m1 ) +#define m3f17() g +#define f19(x, ...) m3 ## __VA_OPT__(x x f16() #x) +#define f20(x, ...) __VA_OPT__(x x)##m4() +#define f21() f17 +#define f17m4() h +#define f22(x,...) 1 ## __VA_OPT__(x ## x 2) ## 3 +#define f23(x,...) 1 ## __VA_OPT__(x 2) ## 3 +#define f24(x,...) 1 ## __VA_OPT__(2 x) ## 3 +#define f25(x,...) 1 ## __VA_OPT__(2 x ## x) ## 3 +t1 f1 (1, 2, 3); +/* { dg-final { scan-file va-opt-3.i "t1 bc;" } } */ +t2 f1 (); +/* { dg-final { scan-file va-opt-3.i "t2 b;" } } */ +t3 f2 (1, 2); +/* { dg-final { scan-file va-opt-3.i "t3 cd;" } } */ +t4 f2 (); +/* { dg-final { scan-file va-opt-3.i "t4 d;" } } */ +t5 f3 (1); +/* { dg-final { scan-file va-opt-3.i "t5 e;" } } */ +t6 f4 (2); +/* { dg-final { scan-file va-opt-3.i "t6 f;" } } */ +t7 f5 (6, 7); +/* { dg-final { scan-file va-opt-3.i "t7 ghi;" } } */ +t8 f5 (); +/* { dg-final { scan-file va-opt-3.i "t8 gi;" } } */ +t9 f6 (8); +/* { dg-final { scan-file va-opt-3.i "t9 jk;" } } */ +t10 f7 (); +/* { dg-final { scan-file va-opt-3.i "t10 l;" } } */ +t11 f8 (); +/* { dg-final { scan-file va-opt-3.i "t11 m;" } } */ +t12 f9 (); +/* { dg-final { scan-file va-opt-3.i "t12 no;" } } */ +t13 f10 (p, 5, 6); +/* { dg-final { scan-file va-opt-3.i "t13 pp;" } } */ +t14 f10 (p); +/* { dg-final { scan-file va-opt-3.i "t14 p;" } } */ +t15 f11 (q, 7); +/* { dg-final { scan-file va-opt-3.i "t15 qq;" } } */ +t16 f11 (q); +/* { dg-final { scan-file va-opt-3.i "t16 q;" } } */ +t17 f12 (r, 1, 2, 3, 4, 5); +/* { dg-final { scan-file va-opt-3.i "t17 rrr;" } } */ +t18 f12 (r); +/* { dg-final { scan-file va-opt-3.i "t18 rr;" } } */ +t19 f13 (1, 2); +/* { dg-final { scan-file va-opt-3.i "t19 a b c;" } } */ +t20 f13 (); +/* { dg-final { scan-file va-opt-3.i "t20 c;" } } */ +t21 f14 (3, 4, 5, 2); +/* { dg-final { scan-file va-opt-3.i "t21 3 4 5;" } } */ +t22 f14 (3, 4, 5); +/* { dg-final { scan-file va-opt-3.i "t22 5;" } } */ +t23 f15 (6, 7, 8, 9); +/* { dg-final { scan-file va-opt-3.i "t23 6 7 7 8 6 8 6 6;" } } */ +t24 f15 (6, 7, 8); +/* { dg-final { scan-file va-opt-3.i "t24 6 6;" } } */ +t25 f19 (f16 (), 1); +/* { dg-final { scan-file va-opt-3.i {t25 g f18 \( \) f17 \( \) "f16 \(\)";} } } */ +t26 f20 (f21 (), 2); +/* { dg-final { scan-file va-opt-3.i "t26 f17 h;" } } */ +t27 f22 (, x); +/* { dg-final { scan-file va-opt-3.i "t27 123;" } } */ +t28 f23 (, x); +/* { dg-final { scan-file va-opt-3.i "t28 123;" } } */ +t29 f24 (, x); +/* { dg-final { scan-file va-opt-3.i "t29 123;" } } */ +t30 f25 (, x); +/* { dg-final { scan-file va-opt-3.i "t30 123;" } } */ diff --git a/libcpp/ChangeLog b/libcpp/ChangeLog index 9c675a52d0c..2f6e1f21a92 100644 --- a/libcpp/ChangeLog +++ b/libcpp/ChangeLog @@ -1,3 +1,17 @@ +2018-02-15 Jason Merrill + Jakub Jelinek + + PR preprocessor/83063 - __VA_OPT__ and ## + PR preprocessor/83708 + * macro.c (vaopt_state): Reorder m_last_was_paste before m_state. + (vaopt_state::vaopt_state): Adjust. + (vaopt_state::update_flags): Add BEGIN and END. + (vaopt_state::update): Return them. + (copy_paste_flag): Factor out of replace_args. + (last_token_is): New. + (replace_args): Handle BEGIN and END. Avoid padding there. + (tokens_buff_last_token_ptr): Return NULL if no tokens. + 2018-01-31 Jakub Jelinek PR preprocessor/69869 diff --git a/libcpp/macro.c b/libcpp/macro.c index f994ac584cc..776af7bd00e 100644 --- a/libcpp/macro.c +++ b/libcpp/macro.c @@ -105,8 +105,8 @@ class vaopt_state { : m_pfile (pfile), m_allowed (any_args), m_variadic (is_variadic), - m_state (0), m_last_was_paste (false), + m_state (0), m_paste_location (0), m_location (0) { @@ -116,7 +116,9 @@ class vaopt_state { { ERROR, DROP, - INCLUDE + INCLUDE, + BEGIN, + END }; /* Given a token, update the state of this tracker and return a @@ -139,7 +141,7 @@ class vaopt_state { } ++m_state; m_location = token->src_loc; - return DROP; + return BEGIN; } else if (m_state == 1) { @@ -191,7 +193,7 @@ class vaopt_state { return ERROR; } - return DROP; + return END; } } return m_allowed ? INCLUDE : DROP; @@ -220,6 +222,9 @@ class vaopt_state { bool m_allowed; /* True if the macro is variadic. */ bool m_variadic; + /* If true, the previous token was ##. This is used to detect when + a paste occurs at the end of the sequence. */ + bool m_last_was_paste; /* The state variable: 0 means not parsing @@ -228,9 +233,6 @@ class vaopt_state { >= 3 means looking for ")", the number encodes the paren depth. */ int m_state; - /* If true, the previous token was ##. This is used to detect when - a paste occurs at the end of the sequence. */ - bool m_last_was_paste; /* The location of the paste token. */ source_location m_paste_location; @@ -1701,6 +1703,30 @@ expanded_token_index (cpp_reader *pfile, cpp_macro *macro, return cur_replacement_token - macro->exp.tokens; } +/* Copy whether PASTE_LEFT is set from SRC to *PASTE_FLAG. */ + +static void +copy_paste_flag (cpp_reader *pfile, const cpp_token **paste_flag, + const cpp_token *src) +{ + cpp_token *token = _cpp_temp_token (pfile); + token->type = (*paste_flag)->type; + token->val = (*paste_flag)->val; + if (src->flags & PASTE_LEFT) + token->flags = (*paste_flag)->flags | PASTE_LEFT; + else + token->flags = (*paste_flag)->flags & ~PASTE_LEFT; + *paste_flag = token; +} + +/* True IFF the last token emitted into BUFF (if any) is PTR. */ + +static bool +last_token_is (_cpp_buff *buff, const cpp_token **ptr) +{ + return (ptr && tokens_buff_last_token_ptr (buff) == ptr); +} + /* Replace the parameters in a function-like macro of NODE with the actual ARGS, and place the result in a newly pushed token context. Expand each argument before replacing, unless it is operated upon @@ -1833,6 +1859,7 @@ replace_args (cpp_reader *pfile, cpp_hashnode *node, cpp_macro *macro, i = 0; vaopt_state vaopt_tracker (pfile, macro->variadic, args[macro->paramc - 1].count > 0); + const cpp_token **vaopt_start = NULL; for (src = macro->exp.tokens; src < limit; src++) { unsigned int arg_tokens_count; @@ -1841,8 +1868,58 @@ replace_args (cpp_reader *pfile, cpp_hashnode *node, cpp_macro *macro, const cpp_token **tmp_token_ptr; /* __VA_OPT__ handling. */ - if (vaopt_tracker.update (src) != vaopt_state::INCLUDE) - continue; + vaopt_state::update_type vostate = vaopt_tracker.update (src); + if (vostate != vaopt_state::INCLUDE) + { + if (vostate == vaopt_state::BEGIN) + { + /* Padding on the left of __VA_OPT__ (unless RHS of ##). */ + if (src != macro->exp.tokens && !(src[-1].flags & PASTE_LEFT)) + { + const cpp_token *t = padding_token (pfile, src); + unsigned index = expanded_token_index (pfile, macro, src, i); + /* Allocate a virtual location for the padding token and + append the token and its location to BUFF and + VIRT_LOCS. */ + tokens_buff_add_token (buff, virt_locs, t, + t->src_loc, t->src_loc, + map, index); + } + vaopt_start = tokens_buff_last_token_ptr (buff); + } + else if (vostate == vaopt_state::END) + { + const cpp_token **start = vaopt_start; + vaopt_start = NULL; + + /* Remove any tail padding from inside the __VA_OPT__. */ + paste_flag = tokens_buff_last_token_ptr (buff); + while (paste_flag && paste_flag != start + && (*paste_flag)->type == CPP_PADDING) + { + tokens_buff_remove_last_token (buff); + paste_flag = tokens_buff_last_token_ptr (buff); + } + + if (src->flags & PASTE_LEFT) + { + /* With a non-empty __VA_OPT__ on the LHS of ##, the last + token should be flagged PASTE_LEFT. */ + if (paste_flag && (*paste_flag)->type != CPP_PADDING) + copy_paste_flag (pfile, paste_flag, src); + } + else + { + /* Otherwise, avoid paste on RHS, __VA_OPT__(c)d or + __VA_OPT__(c)__VA_OPT__(d). */ + const cpp_token *t = &pfile->avoid_paste; + tokens_buff_add_token (buff, virt_locs, + t, t->src_loc, t->src_loc, + NULL, 0); + } + } + continue; + } if (src->type != CPP_MACRO_ARG) { @@ -1921,8 +1998,11 @@ replace_args (cpp_reader *pfile, cpp_hashnode *node, cpp_macro *macro, else paste_flag = tmp_token_ptr; } - /* Remove the paste flag if the RHS is a placemarker. */ - else if (arg_tokens_count == 0) + /* Remove the paste flag if the RHS is a placemarker, unless the + previous emitted token is at the beginning of __VA_OPT__; + placemarkers within __VA_OPT__ are ignored in that case. */ + else if (arg_tokens_count == 0 + && tmp_token_ptr != vaopt_start) paste_flag = tmp_token_ptr; } } @@ -1934,11 +2014,26 @@ replace_args (cpp_reader *pfile, cpp_hashnode *node, cpp_macro *macro, track_macro_expansion), MACRO_ARG_TOKEN_EXPANDED, arg, arg->expanded); + + if (last_token_is (buff, vaopt_start)) + { + /* We're expanding an arg at the beginning of __VA_OPT__. + Skip padding. */ + while (arg_tokens_count) + { + const cpp_token *t = macro_arg_token_iter_get_token (&from); + if (t->type != CPP_PADDING) + break; + macro_arg_token_iter_forward (&from); + --arg_tokens_count; + } + } } /* Padding on the left of an argument (unless RHS of ##). */ if ((!pfile->state.in_directive || pfile->state.directive_wants_padding) - && src != macro->exp.tokens && !(src[-1].flags & PASTE_LEFT)) + && src != macro->exp.tokens && !(src[-1].flags & PASTE_LEFT) + && !last_token_is (buff, vaopt_start)) { const cpp_token *t = padding_token (pfile, src); unsigned index = expanded_token_index (pfile, macro, src, i); @@ -2023,7 +2118,8 @@ replace_args (cpp_reader *pfile, cpp_hashnode *node, cpp_macro *macro, NODE_NAME (node), src->val.macro_arg.arg_no); /* Avoid paste on RHS (even case count == 0). */ - if (!pfile->state.in_directive && !(src->flags & PASTE_LEFT)) + if (!pfile->state.in_directive && !(src->flags & PASTE_LEFT) + && !last_token_is (buff, vaopt_start)) { const cpp_token *t = &pfile->avoid_paste; tokens_buff_add_token (buff, virt_locs, @@ -2033,16 +2129,7 @@ replace_args (cpp_reader *pfile, cpp_hashnode *node, cpp_macro *macro, /* Add a new paste flag, or remove an unwanted one. */ if (paste_flag) - { - cpp_token *token = _cpp_temp_token (pfile); - token->type = (*paste_flag)->type; - token->val = (*paste_flag)->val; - if (src->flags & PASTE_LEFT) - token->flags = (*paste_flag)->flags | PASTE_LEFT; - else - token->flags = (*paste_flag)->flags & ~PASTE_LEFT; - *paste_flag = token; - } + copy_paste_flag (pfile, paste_flag, src); i += arg_tokens_count; } @@ -2213,6 +2300,8 @@ tokens_buff_count (_cpp_buff *buff) static const cpp_token ** tokens_buff_last_token_ptr (_cpp_buff *buff) { + if (BUFF_FRONT (buff) == buff->base) + return NULL; return &((const cpp_token **) BUFF_FRONT (buff))[-1]; } -- cgit v1.2.1 From 8cacebc23a0a6b51ec2d0703b961b7c08a2218ec Mon Sep 17 00:00:00 2001 From: paolo Date: Thu, 15 Feb 2018 18:05:40 +0000 Subject: /cp 2018-02-15 Paolo Carlini PR c++/84330 * constraint.cc (tsubst_constraint_info): Handle an error_mark_node as first argument. /testsuite 2018-02-15 Paolo Carlini PR c++/84330 * g++.dg/concepts/pr84330.C: New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@257698 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/cp/ChangeLog | 6 ++++++ gcc/cp/constraint.cc | 2 +- gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/g++.dg/concepts/pr84330.C | 12 ++++++++++++ 4 files changed, 24 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/g++.dg/concepts/pr84330.C diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 6c95dfe3a62..f7fd4e36278 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,9 @@ +2018-02-15 Paolo Carlini + + PR c++/84330 + * constraint.cc (tsubst_constraint_info): Handle an error_mark_node + as first argument. + 2018-02-14 Paolo Carlini PR c++/84350 diff --git a/gcc/cp/constraint.cc b/gcc/cp/constraint.cc index 622c9fe97a5..37eded17c94 100644 --- a/gcc/cp/constraint.cc +++ b/gcc/cp/constraint.cc @@ -1918,7 +1918,7 @@ tsubst_constraint_info (tree t, tree args, tree tsubst_constraint (tree t, tree args, tsubst_flags_t complain, tree in_decl) { - if (t == NULL_TREE) + if (t == NULL_TREE || t == error_mark_node) return t; switch (TREE_CODE (t)) { diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 3d6da2a9ca4..91e14ced710 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2018-02-15 Paolo Carlini + + PR c++/84330 + * g++.dg/concepts/pr84330.C: New. + 2018-02-15 Tom de Vries * gcc.dg/Wstringop-overflow-3.c: Require effective target alloca. diff --git a/gcc/testsuite/g++.dg/concepts/pr84330.C b/gcc/testsuite/g++.dg/concepts/pr84330.C new file mode 100644 index 00000000000..975ee8941db --- /dev/null +++ b/gcc/testsuite/g++.dg/concepts/pr84330.C @@ -0,0 +1,12 @@ +// PR c++/84330 +// { dg-options "-fconcepts" } + +struct A +{ + template requires sizeof(T) >> 0 void foo(T); // { dg-error "predicate constraint" } + + void bar() + { + foo(0); // { dg-error "no matching" } + } +}; -- cgit v1.2.1 From 993c1df11f50a56fb1e841431ba8e0051a478023 Mon Sep 17 00:00:00 2001 From: jason Date: Thu, 15 Feb 2018 18:15:32 +0000 Subject: PR c++/84368 - wrong error with local variable in variadic lambda. * pt.c (tsubst_pack_expansion): Fix handling of non-packs in local_specializations. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@257699 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/cp/ChangeLog | 6 ++++++ gcc/cp/pt.c | 5 +++-- gcc/testsuite/g++.dg/cpp1y/lambda-generic-variadic14.C | 17 +++++++++++++++++ 3 files changed, 26 insertions(+), 2 deletions(-) create mode 100644 gcc/testsuite/g++.dg/cpp1y/lambda-generic-variadic14.C diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index f7fd4e36278..5ecc8ab2672 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,9 @@ +2018-02-15 Jason Merrill + + PR c++/84368 - wrong error with local variable in variadic lambda. + * pt.c (tsubst_pack_expansion): Fix handling of non-packs in + local_specializations. + 2018-02-15 Paolo Carlini PR c++/84330 diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c index 3ac7adba00c..cd1aed8d677 100644 --- a/gcc/cp/pt.c +++ b/gcc/cp/pt.c @@ -11521,8 +11521,9 @@ tsubst_pack_expansion (tree t, tree args, tsubst_flags_t complain, context. */ tree gen = TREE_PURPOSE (elt); tree inst = TREE_VALUE (elt); - if (DECL_PACK_P (inst)) - inst = retrieve_local_specialization (inst); + if (DECL_P (inst)) + if (tree local = retrieve_local_specialization (inst)) + inst = local; /* else inst is already a full instantiation of the pack. */ register_local_specialization (inst, gen); } diff --git a/gcc/testsuite/g++.dg/cpp1y/lambda-generic-variadic14.C b/gcc/testsuite/g++.dg/cpp1y/lambda-generic-variadic14.C new file mode 100644 index 00000000000..76567966293 --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp1y/lambda-generic-variadic14.C @@ -0,0 +1,17 @@ +// PR c++/84368 +// { dg-do compile { target c++14 } } + +template < typename ... T > +void sink(T ...){} + +template < typename ... T > +void foo(T ... v){ + [](auto ... v){ + auto bar = [](auto, auto){ return 0; }; + sink(bar(v, T{}) ...); + }(v ...); +} + +int main(){ + foo(0); +} -- cgit v1.2.1 From 6bac1b105b3b7ee70c8a3431f870c292afdca5bb Mon Sep 17 00:00:00 2001 From: jason Date: Thu, 15 Feb 2018 18:16:05 +0000 Subject: * c-cppbuiltin.c (c_cpp_builtins): Update __cpp_deduction_guides. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@257700 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/c-family/ChangeLog | 4 ++++ gcc/c-family/c-cppbuiltin.c | 2 +- gcc/testsuite/g++.dg/cpp1z/feat-cxx1z.C | 4 ++-- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/gcc/c-family/ChangeLog b/gcc/c-family/ChangeLog index 1f536d1b4b0..3a124d0c161 100644 --- a/gcc/c-family/ChangeLog +++ b/gcc/c-family/ChangeLog @@ -1,3 +1,7 @@ +2018-02-15 Jason Merrill + + * c-cppbuiltin.c (c_cpp_builtins): Update __cpp_deduction_guides. + 2018-02-09 Nathan Sidwell PR c/84293 diff --git a/gcc/c-family/c-cppbuiltin.c b/gcc/c-family/c-cppbuiltin.c index 0624c006278..3fc4fa9cd68 100644 --- a/gcc/c-family/c-cppbuiltin.c +++ b/gcc/c-family/c-cppbuiltin.c @@ -970,7 +970,7 @@ c_cpp_builtins (cpp_reader *pfile) cpp_define (pfile, "__cpp_capture_star_this=201603"); cpp_define (pfile, "__cpp_inline_variables=201606"); cpp_define (pfile, "__cpp_aggregate_bases=201603"); - cpp_define (pfile, "__cpp_deduction_guides=201606"); + cpp_define (pfile, "__cpp_deduction_guides=201611"); cpp_define (pfile, "__cpp_noexcept_function_type=201510"); cpp_define (pfile, "__cpp_template_auto=201606"); cpp_define (pfile, "__cpp_structured_bindings=201606"); diff --git a/gcc/testsuite/g++.dg/cpp1z/feat-cxx1z.C b/gcc/testsuite/g++.dg/cpp1z/feat-cxx1z.C index b2f046b5c91..2ab1b4e3e86 100644 --- a/gcc/testsuite/g++.dg/cpp1z/feat-cxx1z.C +++ b/gcc/testsuite/g++.dg/cpp1z/feat-cxx1z.C @@ -358,8 +358,8 @@ #ifndef __cpp_deduction_guides # error "__cpp_deduction_guides" -#elif __cpp_deduction_guides != 201606 -# error "__cpp_deduction_guides != 201606" +#elif __cpp_deduction_guides != 201611 +# error "__cpp_deduction_guides != 201611" #endif #ifndef __cpp_if_constexpr -- cgit v1.2.1 From 5b12d982e9c54edc07c4ff1a58863b0fb1267697 Mon Sep 17 00:00:00 2001 From: tkoenig Date: Thu, 15 Feb 2018 18:41:02 +0000 Subject: 2018-02-15 Thomas Koenig PR fortran/stop_shouldfail.f90: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@257702 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/testsuite/ChangeLog | 4 ++++ gcc/testsuite/gfortran.dg/stop_shouldfail.f90 | 5 +++++ 2 files changed, 9 insertions(+) create mode 100644 gcc/testsuite/gfortran.dg/stop_shouldfail.f90 diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 91e14ced710..93827567331 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2018-02-15 Thomas Koenig + + PR fortran/stop_shouldfail.f90: New test. + 2018-02-15 Paolo Carlini PR c++/84330 diff --git a/gcc/testsuite/gfortran.dg/stop_shouldfail.f90 b/gcc/testsuite/gfortran.dg/stop_shouldfail.f90 new file mode 100644 index 00000000000..11fc12b4dc9 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/stop_shouldfail.f90 @@ -0,0 +1,5 @@ +! { dg-do run } +! { dg-shouldfail "STOP 1" } +program main + stop 1 +end program main -- cgit v1.2.1 From 1b05e949e5babb534778a9526998cde09ad4a2cb Mon Sep 17 00:00:00 2001 From: tkoenig Date: Thu, 15 Feb 2018 18:46:22 +0000 Subject: 2018-02-15 Thomas Koenig PR fortran/84381 * gfortran.dg/stop_shouldfail.f90: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@257703 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/testsuite/ChangeLog | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 93827567331..4892192860a 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,6 +1,7 @@ 2018-02-15 Thomas Koenig - PR fortran/stop_shouldfail.f90: New test. + PR fortran/84381 + * gfortran.dg/stop_shouldfail.f90: New test. 2018-02-15 Paolo Carlini -- cgit v1.2.1 From f9889f15b91b3eb571c536e633b972e5293cc020 Mon Sep 17 00:00:00 2001 From: jason Date: Thu, 15 Feb 2018 19:46:13 +0000 Subject: PR c++/84376 - ICE with omitted template arguments. * pt.c (dguide_name_p): Check for IDENTIFIER_NODE. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@257706 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/cp/ChangeLog | 3 +++ gcc/cp/pt.c | 3 ++- gcc/testsuite/g++.dg/cpp1z/class-deduction47.C | 7 +++++++ 3 files changed, 12 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/g++.dg/cpp1z/class-deduction47.C diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 5ecc8ab2672..58073748315 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,5 +1,8 @@ 2018-02-15 Jason Merrill + PR c++/84376 - ICE with omitted template arguments. + * pt.c (dguide_name_p): Check for IDENTIFIER_NODE. + PR c++/84368 - wrong error with local variable in variadic lambda. * pt.c (tsubst_pack_expansion): Fix handling of non-packs in local_specializations. diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c index cd1aed8d677..268cfe5a454 100644 --- a/gcc/cp/pt.c +++ b/gcc/cp/pt.c @@ -25454,7 +25454,8 @@ dguide_name (tree tmpl) bool dguide_name_p (tree name) { - return (TREE_TYPE (name) + return (TREE_CODE (name) == IDENTIFIER_NODE + && TREE_TYPE (name) && !strncmp (IDENTIFIER_POINTER (name), dguide_base, strlen (dguide_base))); } diff --git a/gcc/testsuite/g++.dg/cpp1z/class-deduction47.C b/gcc/testsuite/g++.dg/cpp1z/class-deduction47.C new file mode 100644 index 00000000000..3e47f58e698 --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp1z/class-deduction47.C @@ -0,0 +1,7 @@ +// PR c++/84376 + +template struct A {}; + +template T foo() { return T(); } + +template<> A foo(); // { dg-error "A" } -- cgit v1.2.1 From 61e0574c93cec706758b6cf53493c14b407a96d2 Mon Sep 17 00:00:00 2001 From: redi Date: Thu, 15 Feb 2018 20:56:41 +0000 Subject: PR libstdc++/81797 Add .NOTPARALLEL to include/Makefile for darwin PR libstdc++/81797 * configure.ac (INCLUDE_DIR_NOTPARALLEL): Define. * configure: Regenerate. * include/Makefile.am (INCLUDE_DIR_NOTPARALLEL): Add .NOTPARALLEL when defined. * include/Makefile.in: Regenerate. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@257710 138bc75d-0d04-0410-961f-82ee72b054a4 --- libstdc++-v3/ChangeLog | 9 +++++++++ libstdc++-v3/configure | 36 +++++++++++++++++++++++++++--------- libstdc++-v3/configure.ac | 6 ++++++ libstdc++-v3/include/Makefile.am | 5 +++++ libstdc++-v3/include/Makefile.in | 3 +++ 5 files changed, 50 insertions(+), 9 deletions(-) diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 98b4295d87d..b2aa592cf7e 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,12 @@ +2018-02-15 Jonathan Wakely + + PR libstdc++/81797 + * configure.ac (INCLUDE_DIR_NOTPARALLEL): Define. + * configure: Regenerate. + * include/Makefile.am (INCLUDE_DIR_NOTPARALLEL): Add .NOTPARALLEL when + defined. + * include/Makefile.in: Regenerate. + 2018-01-29 Jonathan Wakely PR libstdc++/83833 diff --git a/libstdc++-v3/configure b/libstdc++-v3/configure index 69845f486f0..fb3bf675bbc 100755 --- a/libstdc++-v3/configure +++ b/libstdc++-v3/configure @@ -621,6 +621,8 @@ CPU_DEFINES_SRCDIR ATOMIC_FLAGS ATOMIC_WORD_SRCDIR ATOMICITY_SRCDIR +INCLUDE_DIR_NOTPARALLEL_FALSE +INCLUDE_DIR_NOTPARALLEL_TRUE BUILD_PDF_FALSE BUILD_PDF_TRUE PDFLATEX @@ -11605,7 +11607,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 11608 "configure" +#line 11610 "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -11711,7 +11713,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 11714 "configure" +#line 11716 "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -15397,7 +15399,7 @@ $as_echo "$glibcxx_cv_atomic_long_long" >&6; } # Fake what AC_TRY_COMPILE does. cat > conftest.$ac_ext << EOF -#line 15400 "configure" +#line 15402 "configure" int main() { typedef bool atomic_type; @@ -15432,7 +15434,7 @@ $as_echo "$glibcxx_cv_atomic_bool" >&6; } rm -f conftest* cat > conftest.$ac_ext << EOF -#line 15435 "configure" +#line 15437 "configure" int main() { typedef short atomic_type; @@ -15467,7 +15469,7 @@ $as_echo "$glibcxx_cv_atomic_short" >&6; } rm -f conftest* cat > conftest.$ac_ext << EOF -#line 15470 "configure" +#line 15472 "configure" int main() { // NB: _Atomic_word not necessarily int. @@ -15503,7 +15505,7 @@ $as_echo "$glibcxx_cv_atomic_int" >&6; } rm -f conftest* cat > conftest.$ac_ext << EOF -#line 15506 "configure" +#line 15508 "configure" int main() { typedef long long atomic_type; @@ -15584,7 +15586,7 @@ $as_echo "$as_me: WARNING: Performance of certain classes will degrade as a resu # unnecessary for this test. cat > conftest.$ac_ext << EOF -#line 15587 "configure" +#line 15589 "configure" int main() { _Decimal32 d1; @@ -15626,7 +15628,7 @@ ac_compiler_gnu=$ac_cv_cxx_compiler_gnu # unnecessary for this test. cat > conftest.$ac_ext << EOF -#line 15629 "configure" +#line 15631 "configure" template struct same { typedef T2 type; }; @@ -15660,7 +15662,7 @@ $as_echo "$enable_int128" >&6; } rm -f conftest* cat > conftest.$ac_ext << EOF -#line 15663 "configure" +#line 15665 "configure" template struct same { typedef T2 type; }; @@ -81079,6 +81081,18 @@ else fi +case "$build" in + *-*-darwin* ) glibcxx_include_dir_notparallel=yes ;; + * ) glibcxx_include_dir_notparallel=no ;; +esac + if test $glibcxx_include_dir_notparallel = "yes"; then + INCLUDE_DIR_NOTPARALLEL_TRUE= + INCLUDE_DIR_NOTPARALLEL_FALSE='#' +else + INCLUDE_DIR_NOTPARALLEL_TRUE='#' + INCLUDE_DIR_NOTPARALLEL_FALSE= +fi + # Propagate the target-specific source directories through the build chain. ATOMICITY_SRCDIR=config/${atomicity_dir} @@ -81845,6 +81859,10 @@ if test -z "${BUILD_PDF_TRUE}" && test -z "${BUILD_PDF_FALSE}"; then as_fn_error "conditional \"BUILD_PDF\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi +if test -z "${INCLUDE_DIR_NOTPARALLEL_TRUE}" && test -z "${INCLUDE_DIR_NOTPARALLEL_FALSE}"; then + as_fn_error "conditional \"INCLUDE_DIR_NOTPARALLEL\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi : ${CONFIG_STATUS=./config.status} ac_write_fail=0 diff --git a/libstdc++-v3/configure.ac b/libstdc++-v3/configure.ac index e110f579917..0ef96270c9c 100644 --- a/libstdc++-v3/configure.ac +++ b/libstdc++-v3/configure.ac @@ -473,6 +473,12 @@ AM_CONDITIONAL(BUILD_PDF, test $ac_cv_prog_DBLATEX = "yes" && test $ac_cv_prog_PDFLATEX = "yes") +case "$build" in + *-*-darwin* ) glibcxx_include_dir_notparallel=yes ;; + * ) glibcxx_include_dir_notparallel=no ;; +esac +AM_CONDITIONAL(INCLUDE_DIR_NOTPARALLEL, + test $glibcxx_include_dir_notparallel = "yes") # Propagate the target-specific source directories through the build chain. ATOMICITY_SRCDIR=config/${atomicity_dir} diff --git a/libstdc++-v3/include/Makefile.am b/libstdc++-v3/include/Makefile.am index 7cf0ef93eb4..70a662fa2f9 100644 --- a/libstdc++-v3/include/Makefile.am +++ b/libstdc++-v3/include/Makefile.am @@ -1479,3 +1479,8 @@ $(decimal_headers): ; @: $(ext_headers): ; @: $(experimental_headers): ; @: $(experimental_bits_headers): ; @: + +if INCLUDE_DIR_NOTPARALLEL +# See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81797 +.NOTPARALLEL: +endif diff --git a/libstdc++-v3/include/Makefile.in b/libstdc++-v3/include/Makefile.in index 068ffd018f1..790887a259c 100644 --- a/libstdc++-v3/include/Makefile.in +++ b/libstdc++-v3/include/Makefile.in @@ -1903,6 +1903,9 @@ $(ext_headers): ; @: $(experimental_headers): ; @: $(experimental_bits_headers): ; @: +# See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81797 +@INCLUDE_DIR_NOTPARALLEL_TRUE@.NOTPARALLEL: + # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: -- cgit v1.2.1 From 14f10e09117672cbded9e0cfd2596d0f03b10f27 Mon Sep 17 00:00:00 2001 From: janus Date: Thu, 15 Feb 2018 21:16:00 +0000 Subject: 2018-02-15 Janus Weil PR fortran/84409 * interface.c (check_dtio_arg_TKR_intent): Add a check for character length. 2018-02-15 Janus Weil PR fortran/84409 * gfortran.dg/dtio_21.f03: Add an error message. * gfortran.dg/dtio_22.f90: Fix invalid test case. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@257711 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/fortran/ChangeLog | 6 ++++++ gcc/fortran/interface.c | 6 +++++- gcc/testsuite/ChangeLog | 6 ++++++ gcc/testsuite/gfortran.dg/dtio_21.f90 | 4 ++-- gcc/testsuite/gfortran.dg/dtio_22.f90 | 4 ++-- 5 files changed, 21 insertions(+), 5 deletions(-) diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index ed91bf79b52..481004e7f10 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,9 @@ +2018-02-15 Janus Weil + + PR fortran/84409 + * interface.c (check_dtio_arg_TKR_intent): Add a check for character + length. + 2018-02-14 Janus Weil PR fortran/84385 diff --git a/gcc/fortran/interface.c b/gcc/fortran/interface.c index a5f3f4dda16..ad029289c0f 100644 --- a/gcc/fortran/interface.c +++ b/gcc/fortran/interface.c @@ -4673,7 +4673,7 @@ gfc_check_typebound_override (gfc_symtree* proc, gfc_symtree* old) /* The following three functions check that the formal arguments of user defined derived type IO procedures are compliant with - the requirements of the standard. */ + the requirements of the standard, see F03:9.5.3.7.2 (F08:9.6.4.8.3). */ static void check_dtio_arg_TKR_intent (gfc_symbol *fsym, bool typebound, bt type, @@ -4702,6 +4702,10 @@ check_dtio_arg_TKR_intent (gfc_symbol *fsym, bool typebound, bt type, gfc_error ("DTIO dummy argument at %L must be an " "ASSUMED SHAPE ARRAY", &fsym->declared_at); + if (type == BT_CHARACTER && fsym->ts.u.cl->length != NULL) + gfc_error ("DTIO character argument at %L must have assumed length", + &fsym->declared_at); + if (fsym->attr.intent != intent) gfc_error ("DTIO dummy argument at %L must have INTENT %s", &fsym->declared_at, gfc_code2string (intents, (int)intent)); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 4892192860a..aceed33c5b8 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2018-02-15 Janus Weil + + PR fortran/84409 + * gfortran.dg/dtio_21.f03: Add an error message. + * gfortran.dg/dtio_22.f90: Fix invalid test case. + 2018-02-15 Thomas Koenig PR fortran/84381 diff --git a/gcc/testsuite/gfortran.dg/dtio_21.f90 b/gcc/testsuite/gfortran.dg/dtio_21.f90 index 8bfe3aa4367..e8d433c58b2 100644 --- a/gcc/testsuite/gfortran.dg/dtio_21.f90 +++ b/gcc/testsuite/gfortran.dg/dtio_21.f90 @@ -19,10 +19,10 @@ program p allocate(z2) print *, z2 contains - subroutine wf2(this, a, b, c, d, e) + subroutine wf2(this, a, b, c, d, e) ! { dg-error "must have assumed length" } class(t2), intent(in) :: this integer, intent(in) :: a - character, intent(in) :: b + character(*), intent(in) :: b integer, intent(in) :: c(:) integer, intent(out) :: d character, intent(inout) :: e diff --git a/gcc/testsuite/gfortran.dg/dtio_22.f90 b/gcc/testsuite/gfortran.dg/dtio_22.f90 index f39450cbca2..152a96a6beb 100644 --- a/gcc/testsuite/gfortran.dg/dtio_22.f90 +++ b/gcc/testsuite/gfortran.dg/dtio_22.f90 @@ -15,10 +15,10 @@ contains subroutine wf(this, unit, b, c, iostat, iomsg) class(t), intent(in) :: this integer, intent(in) :: unit - character, intent(in) :: b + character(*), intent(in) :: b integer, intent(in) :: c(:) integer, intent(out) :: iostat - character, intent(inout) :: iomsg + character(*), intent(inout) :: iomsg write (unit, "(i3)", IOSTAT=iostat, IOMSG=iomsg) this%i end subroutine end -- cgit v1.2.1 From acc45438e98b0308c914056dda7bcb01cee81c44 Mon Sep 17 00:00:00 2001 From: jason Date: Thu, 15 Feb 2018 22:01:33 +0000 Subject: PR c++/84045 - ICE with typedef and noexcept. * except.c (build_noexcept_spec): Use strip_typedefs_expr. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@257713 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/cp/ChangeLog | 3 +++ gcc/cp/except.c | 4 ++++ gcc/testsuite/g++.dg/cpp0x/noexcept32.C | 14 ++++++++++++++ 3 files changed, 21 insertions(+) create mode 100644 gcc/testsuite/g++.dg/cpp0x/noexcept32.C diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 58073748315..33746aeb23e 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,5 +1,8 @@ 2018-02-15 Jason Merrill + PR c++/84045 - ICE with typedef and noexcept. + * except.c (build_noexcept_spec): Use strip_typedefs_expr. + PR c++/84376 - ICE with omitted template arguments. * pt.c (dguide_name_p): Check for IDENTIFIER_NODE. diff --git a/gcc/cp/except.c b/gcc/cp/except.c index 669bf9f6eaf..0b46698b974 100644 --- a/gcc/cp/except.c +++ b/gcc/cp/except.c @@ -1217,6 +1217,10 @@ build_noexcept_spec (tree expr, int complain) { gcc_assert (processing_template_decl || TREE_CODE (expr) == DEFERRED_NOEXCEPT); + if (TREE_CODE (expr) != DEFERRED_NOEXCEPT) + /* Avoid problems with a function type built with a dependent typedef + being reused in another scope (c++/84045). */ + expr = strip_typedefs_expr (expr); return build_tree_list (expr, NULL_TREE); } } diff --git a/gcc/testsuite/g++.dg/cpp0x/noexcept32.C b/gcc/testsuite/g++.dg/cpp0x/noexcept32.C new file mode 100644 index 00000000000..9a435049599 --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/noexcept32.C @@ -0,0 +1,14 @@ +// PR c++/84045 +// { dg-do compile { target c++11 } } + +template struct K { + static const bool d = true; +}; +template struct B { + typedef K D; + void foo () noexcept (D::d); +}; +template struct P { + P () noexcept (K::d); +}; +P p; -- cgit v1.2.1 From 535d4fd3b05ad059fddaf97d5604e7b6db85bc8c Mon Sep 17 00:00:00 2001 From: msebor Date: Thu, 15 Feb 2018 22:28:23 +0000 Subject: gcc/testsuite/ChangeLog: * gcc.dg/lto/README (dg-lto-warning, dg-lto-message): Document new directives. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@257714 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/gcc.dg/lto/README | 24 +++++++++++++++++++++--- 2 files changed, 26 insertions(+), 3 deletions(-) diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index aceed33c5b8..11da4b2caff 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2018-02-15 Martin Sebor + + * gcc.dg/lto/README (dg-lto-warning, dg-lto-message): Document new + directives. + 2018-02-15 Janus Weil PR fortran/84409 diff --git a/gcc/testsuite/gcc.dg/lto/README b/gcc/testsuite/gcc.dg/lto/README index 1a13dd92c62..6777c15766a 100644 --- a/gcc/testsuite/gcc.dg/lto/README +++ b/gcc/testsuite/gcc.dg/lto/README @@ -1,4 +1,20 @@ This directory contains tests for link-time optimization (LTO). + +=== Directives === + +The LTO harness recognizes the following special DejaGnu directives: + * dg-lto-do - the equivalent of dg-do with a limited set of supported + arguments (see below), + * dg-lto-options - the equivalent of dg-options with additional syntax + to support different sets of options for different files compiled + as part of the same test case, + * dg-lto-warning - the equivalent of dg-warning for diagnostics expected + to be emitted at LTO link time, + * dg-lto-message - the equivakent of dg-message for informational notes + expected to be emitted at LTO link time. + +=== Test Names === + Tests in this directory may span multiple files, so the naming of the files is significant. @@ -9,8 +25,8 @@ executable. By default, each set of files will be compiled with list of options listed in LTO_OPTIONS (../../lib/lto.exp), which can be -overwritten in the shell environment or using the 'dg-lto-options' -command in the main file of the set (i.e., the file with _0 +overridden in the shell environment or using the 'dg-lto-options' +directive in the main file of the set (i.e., the file with _0 suffix). For example, given the files a_0.C a_1.C a_2.C, they will be @@ -24,7 +40,9 @@ $ g++ -o a_0.o a_1.o a_2.o Tests that do not need more than one file are a special case where there is a single file named 'foo_0.C'. -The only supported dg-lto-do option are 'assemble', 'run' and 'link'. +=== The dg-lto-do Directive == + +The only supported dg-lto-do options are 'assemble', 'run' and 'link'. Additionally, these can only be used in the main file. If 'assemble' is used, only the individual object files are generated. If 'link' is used, the final executable is generated -- cgit v1.2.1 From d67901d7e1789538919ae308863c377801c9d643 Mon Sep 17 00:00:00 2001 From: gccadmin Date: Fri, 16 Feb 2018 00:16:35 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@257718 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index 1f1bb18bc2e..50a6698fc44 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20180215 +20180216 -- cgit v1.2.1 From 7238ae962fbc16a752efad42931d43cbe4764d75 Mon Sep 17 00:00:00 2001 From: jason Date: Fri, 16 Feb 2018 02:47:19 +0000 Subject: PR c++/83227 - C++17 ICE with init-list derived-to-base conversion. * call.c (convert_like_real): Don't use the copy-list-initialization shortcut for ck_base. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@257720 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/cp/ChangeLog | 4 ++++ gcc/cp/call.c | 9 +++++---- gcc/testsuite/g++.dg/cpp0x/initlist98.C | 17 +++++++++++++++++ 3 files changed, 26 insertions(+), 4 deletions(-) create mode 100644 gcc/testsuite/g++.dg/cpp0x/initlist98.C diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 33746aeb23e..ecd52d04b97 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,5 +1,9 @@ 2018-02-15 Jason Merrill + PR c++/83227 - C++17 ICE with init-list derived-to-base conversion. + * call.c (convert_like_real): Don't use the copy-list-initialization + shortcut for ck_base. + PR c++/84045 - ICE with typedef and noexcept. * except.c (build_noexcept_spec): Use strip_typedefs_expr. diff --git a/gcc/cp/call.c b/gcc/cp/call.c index 7176e4afa15..5698ff60a4d 100644 --- a/gcc/cp/call.c +++ b/gcc/cp/call.c @@ -6938,6 +6938,11 @@ convert_like_real (conversion *convs, tree expr, tree fn, int argnum, && DECL_INHERITED_CTOR (current_function_decl)) return expr; + if (TREE_CODE (expr) == TARGET_EXPR + && TARGET_EXPR_LIST_INIT_P (expr)) + /* Copy-list-initialization doesn't actually involve a copy. */ + return expr; + /* Fall through. */ case ck_base: if (convs->kind == ck_base && !convs->need_temporary_p) @@ -6964,10 +6969,6 @@ convert_like_real (conversion *convs, tree expr, tree fn, int argnum, if (convs->rvaluedness_matches_p) /* standard_conversion got LOOKUP_PREFER_RVALUE. */ flags |= LOOKUP_PREFER_RVALUE; - if (TREE_CODE (expr) == TARGET_EXPR - && TARGET_EXPR_LIST_INIT_P (expr)) - /* Copy-list-initialization doesn't actually involve a copy. */ - return expr; expr = build_temp (expr, totype, flags, &diag_kind, complain); if (diag_kind && complain) { diff --git a/gcc/testsuite/g++.dg/cpp0x/initlist98.C b/gcc/testsuite/g++.dg/cpp0x/initlist98.C new file mode 100644 index 00000000000..4f2fcd20219 --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/initlist98.C @@ -0,0 +1,17 @@ +// PR c++/83227 +// { dg-do compile { target c++11 } } + +#include + +template struct f { + f(std::initializer_list) {} +}; + +struct h {}; +struct i : h { + i(); +}; +void foo(f); +int main() { + foo({i{}}); +} -- cgit v1.2.1 From 606f008bed9783d2775d5c071f5361ba55904683 Mon Sep 17 00:00:00 2001 From: rguenth Date: Fri, 16 Feb 2018 07:56:16 +0000 Subject: 2018-02-16 Richard Biener PR tree-optimization/84190 * tree-ssa.c (non_rewritable_mem_ref_base): Do not touch volatile accesses if the decl isn't volatile. * g++.dg/torture/pr84190.C: New testcase. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@257721 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 6 ++++++ gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/g++.dg/torture/pr84190.C | 20 ++++++++++++++++++++ gcc/tree-ssa.c | 3 ++- 4 files changed, 33 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/g++.dg/torture/pr84190.C diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 4062532e804..8ca7fba1714 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2018-02-16 Richard Biener + + PR tree-optimization/84190 + * tree-ssa.c (non_rewritable_mem_ref_base): Do not touch + volatile accesses if the decl isn't volatile. + 2018-02-15 Jason Merrill PR c++/84314 - ICE with templates and fastcall attribute. diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 11da4b2caff..8c0e0f0d97d 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2018-02-16 Richard Biener + + PR tree-optimization/84190 + * g++.dg/torture/pr84190.C: New testcase. + 2018-02-15 Martin Sebor * gcc.dg/lto/README (dg-lto-warning, dg-lto-message): Document new diff --git a/gcc/testsuite/g++.dg/torture/pr84190.C b/gcc/testsuite/g++.dg/torture/pr84190.C new file mode 100644 index 00000000000..a7bab944365 --- /dev/null +++ b/gcc/testsuite/g++.dg/torture/pr84190.C @@ -0,0 +1,20 @@ +// { dg-do compile } +// For slim LTO there's no optimized dump +// { dg-skip-if "" { *-*-* } { "-flto" } { "" } } +// { dg-additional-options "-fdump-tree-optimized" } + +typedef double T; +static int equalfn (volatile T* x, volatile T* y); +T gx, gy; +int main () +{ + T x = gx, y = gy; + return equalfn (&x, &y); +} +static int equalfn (volatile T* x, volatile T* y) +{ + return (*x == *y); +} + +// There should be exactly two volatile accesses (ignoring clobbers). +// { dg-final { scan-tree-dump-times " ={v} \[^\{\]" 2 "optimized" } } diff --git a/gcc/tree-ssa.c b/gcc/tree-ssa.c index ee311ce9758..949b951e1aa 100644 --- a/gcc/tree-ssa.c +++ b/gcc/tree-ssa.c @@ -1427,7 +1427,8 @@ non_rewritable_mem_ref_base (tree ref) if (! DECL_P (decl)) return NULL_TREE; if (! is_gimple_reg_type (TREE_TYPE (base)) - || VOID_TYPE_P (TREE_TYPE (base))) + || VOID_TYPE_P (TREE_TYPE (base)) + || TREE_THIS_VOLATILE (decl) != TREE_THIS_VOLATILE (base)) return decl; if ((TREE_CODE (TREE_TYPE (decl)) == VECTOR_TYPE || TREE_CODE (TREE_TYPE (decl)) == COMPLEX_TYPE) -- cgit v1.2.1 From 97744494766c0f53bdb293b61fa97da71a3a1f3e Mon Sep 17 00:00:00 2001 From: rguenth Date: Fri, 16 Feb 2018 08:16:17 +0000 Subject: 2018-02-16 Richard Biener PR tree-optimization/84399 * graphite-scop-detection.c (scop_detection::stmt_simple_for_scop_p): For operands we can analyze at their definition make sure we can analyze them at each use as well. * gcc.dg/graphite/pr84399.c: New testcase. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@257723 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 7 +++++++ gcc/graphite-scop-detection.c | 18 +++++++++++++++++- gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/gcc.dg/graphite/pr84399.c | 23 +++++++++++++++++++++++ 4 files changed, 52 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/gcc.dg/graphite/pr84399.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 8ca7fba1714..f97986b0e9a 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2018-02-16 Richard Biener + + PR tree-optimization/84399 + * graphite-scop-detection.c (scop_detection::stmt_simple_for_scop_p): + For operands we can analyze at their definition make sure we can + analyze them at each use as well. + 2018-02-16 Richard Biener PR tree-optimization/84190 diff --git a/gcc/graphite-scop-detection.c b/gcc/graphite-scop-detection.c index 43716f18448..70cb773186a 100644 --- a/gcc/graphite-scop-detection.c +++ b/gcc/graphite-scop-detection.c @@ -1027,7 +1027,23 @@ scop_detection::stmt_simple_for_scop_p (sese_l scop, gimple *stmt, case GIMPLE_ASSIGN: case GIMPLE_CALL: - return true; + { + tree op; + ssa_op_iter i; + /* Verify that if we can analyze operands at their def site we + also can represent them when analyzed at their uses. */ + FOR_EACH_SSA_TREE_OPERAND (op, stmt, i, SSA_OP_USE) + if (scev_analyzable_p (op, scop) + && !graphite_can_represent_expr (scop, bb->loop_father, op)) + { + DEBUG_PRINT (dp << "[scop-detection-fail] " + << "Graphite cannot represent stmt:\n"; + print_gimple_stmt (dump_file, stmt, 0, + TDF_VOPS | TDF_MEMSYMS)); + return false; + } + return true; + } default: /* These nodes cut a new scope. */ diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 8c0e0f0d97d..772879fd90a 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2018-02-16 Richard Biener + + PR tree-optimization/84399 + * gcc.dg/graphite/pr84399.c: New testcase. + 2018-02-16 Richard Biener PR tree-optimization/84190 diff --git a/gcc/testsuite/gcc.dg/graphite/pr84399.c b/gcc/testsuite/gcc.dg/graphite/pr84399.c new file mode 100644 index 00000000000..4b142df75a2 --- /dev/null +++ b/gcc/testsuite/gcc.dg/graphite/pr84399.c @@ -0,0 +1,23 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -floop-nest-optimize -fno-tree-loop-im --param scev-max-expr-size=1" } */ + +void +h8 (int cv, int od) +{ + for (;;) + { + int ih = (__UINTPTR_TYPE__)&od; + if (cv == 0) + while (od < 1) + { + int lq; + + for (lq = 0; lq < 3; ++lq) + for (ih = 0; ih < 4; ++ih) + od += lq; + } + while (ih < 1) + { + } + } +} -- cgit v1.2.1 From 62e40fb514b411d131c2ff6ad34b2f28f61d145e Mon Sep 17 00:00:00 2001 From: ebotcazou Date: Fri, 16 Feb 2018 08:20:32 +0000 Subject: PR rtl-optimization/81443 * rtlanal.c (num_sign_bit_copies1) : Do not propagate results from inner REGs to paradoxical SUBREGs. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@257724 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 6 ++++++ gcc/rtlanal.c | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index f97986b0e9a..16c9d9bb810 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2018-02-16 Eric Botcazou + + PR rtl-optimization/81443 + * rtlanal.c (num_sign_bit_copies1) : Do not propagate results + from inner REGs to paradoxical SUBREGs. + 2018-02-16 Richard Biener PR tree-optimization/84399 diff --git a/gcc/rtlanal.c b/gcc/rtlanal.c index 89d586b7288..ac3662de3ce 100644 --- a/gcc/rtlanal.c +++ b/gcc/rtlanal.c @@ -5101,7 +5101,7 @@ num_sign_bit_copies1 (const_rtx x, scalar_int_mode mode, const_rtx known_x, if (WORD_REGISTER_OPERATIONS && load_extend_op (inner_mode) == SIGN_EXTEND && paradoxical_subreg_p (x) - && (MEM_P (SUBREG_REG (x)) || REG_P (SUBREG_REG (x)))) + && MEM_P (SUBREG_REG (x))) return cached_num_sign_bit_copies (SUBREG_REG (x), mode, known_x, known_mode, known_ret); } -- cgit v1.2.1 From d686eece5bdee1444d19b9d6b2451c8582f06a2b Mon Sep 17 00:00:00 2001 From: jakub Date: Fri, 16 Feb 2018 09:04:00 +0000 Subject: PR rtl-optimization/83723 * lra-int.h (lra_substitute_pseudo): Add DEBUG_P argument. * lra.c (lra_substitute_pseudo): Likewise. If true, use gen_rtx_raw_SUBREG instead of gen_rtx_SUBREG. Pass DEBUG_P to recursive calls. (lra_substitute_pseudo_within_insn): Adjust lra_substitute_pseudo callers. * lra-constraints.c (inherit_reload_reg, split_reg): Likewise. * gcc.dg/pr83723.c: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@257725 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 11 +++++++++++ gcc/lra-constraints.c | 6 ++++-- gcc/lra-int.h | 2 +- gcc/lra.c | 24 +++++++++++++++--------- gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/gcc.dg/pr83723.c | 20 ++++++++++++++++++++ 6 files changed, 56 insertions(+), 12 deletions(-) create mode 100644 gcc/testsuite/gcc.dg/pr83723.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 16c9d9bb810..76eee8a4b56 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,14 @@ +2018-02-16 Jakub Jelinek + + PR rtl-optimization/83723 + * lra-int.h (lra_substitute_pseudo): Add DEBUG_P argument. + * lra.c (lra_substitute_pseudo): Likewise. If true, use + gen_rtx_raw_SUBREG instead of gen_rtx_SUBREG. Pass DEBUG_P to + recursive calls. + (lra_substitute_pseudo_within_insn): Adjust lra_substitute_pseudo + callers. + * lra-constraints.c (inherit_reload_reg, split_reg): Likewise. + 2018-02-16 Eric Botcazou PR rtl-optimization/81443 diff --git a/gcc/lra-constraints.c b/gcc/lra-constraints.c index 125bbb6c02b..9d22da232f4 100644 --- a/gcc/lra-constraints.c +++ b/gcc/lra-constraints.c @@ -5287,7 +5287,8 @@ inherit_reload_reg (bool def_p, int original_regno, lra_assert (DEBUG_INSN_P (usage_insn)); next_usage_insns = XEXP (next_usage_insns, 1); } - lra_substitute_pseudo (&usage_insn, original_regno, new_reg, false); + lra_substitute_pseudo (&usage_insn, original_regno, new_reg, false, + DEBUG_INSN_P (usage_insn)); lra_update_insn_regno_info (as_a (usage_insn)); if (lra_dump_file != NULL) { @@ -5608,7 +5609,8 @@ split_reg (bool before_p, int original_regno, rtx_insn *insn, usage_insn = XEXP (next_usage_insns, 0); lra_assert (DEBUG_INSN_P (usage_insn)); next_usage_insns = XEXP (next_usage_insns, 1); - lra_substitute_pseudo (&usage_insn, original_regno, new_reg, false); + lra_substitute_pseudo (&usage_insn, original_regno, new_reg, false, + true); lra_update_insn_regno_info (as_a (usage_insn)); if (lra_dump_file != NULL) { diff --git a/gcc/lra-int.h b/gcc/lra-int.h index d737816146f..662bc4c14ed 100644 --- a/gcc/lra-int.h +++ b/gcc/lra-int.h @@ -309,7 +309,7 @@ extern void lra_update_dups (lra_insn_recog_data_t, signed char *); extern void lra_process_new_insns (rtx_insn *, rtx_insn *, rtx_insn *, const char *); -extern bool lra_substitute_pseudo (rtx *, int, rtx, bool); +extern bool lra_substitute_pseudo (rtx *, int, rtx, bool, bool); extern bool lra_substitute_pseudo_within_insn (rtx_insn *, int, rtx, bool); extern lra_insn_recog_data_t lra_set_insn_recog_data (rtx_insn *); diff --git a/gcc/lra.c b/gcc/lra.c index fc78b226ac7..c6feb2630bb 100644 --- a/gcc/lra.c +++ b/gcc/lra.c @@ -1893,9 +1893,11 @@ lra_process_new_insns (rtx_insn *insn, rtx_insn *before, rtx_insn *after, /* Replace all references to register OLD_REGNO in *LOC with pseudo register NEW_REG. Try to simplify subreg of constant if SUBREG_P. - Return true if any change was made. */ + DEBUG_P is if LOC is within a DEBUG_INSN. Return true if any + change was made. */ bool -lra_substitute_pseudo (rtx *loc, int old_regno, rtx new_reg, bool subreg_p) +lra_substitute_pseudo (rtx *loc, int old_regno, rtx new_reg, bool subreg_p, + bool debug_p) { rtx x = *loc; bool result = false; @@ -1931,11 +1933,14 @@ lra_substitute_pseudo (rtx *loc, int old_regno, rtx new_reg, bool subreg_p) if (mode != inner_mode && ! (CONST_INT_P (new_reg) && SCALAR_INT_MODE_P (mode))) { - if (!partial_subreg_p (mode, inner_mode) - || ! SCALAR_INT_MODE_P (inner_mode)) - new_reg = gen_rtx_SUBREG (mode, new_reg, 0); + poly_uint64 offset = 0; + if (partial_subreg_p (mode, inner_mode) + && SCALAR_INT_MODE_P (inner_mode)) + offset = subreg_lowpart_offset (mode, inner_mode); + if (debug_p) + new_reg = gen_rtx_raw_SUBREG (mode, new_reg, offset); else - new_reg = gen_lowpart_SUBREG (mode, new_reg); + new_reg = gen_rtx_SUBREG (mode, new_reg, offset); } *loc = new_reg; return true; @@ -1948,14 +1953,14 @@ lra_substitute_pseudo (rtx *loc, int old_regno, rtx new_reg, bool subreg_p) if (fmt[i] == 'e') { if (lra_substitute_pseudo (&XEXP (x, i), old_regno, - new_reg, subreg_p)) + new_reg, subreg_p, debug_p)) result = true; } else if (fmt[i] == 'E') { for (j = XVECLEN (x, i) - 1; j >= 0; j--) if (lra_substitute_pseudo (&XVECEXP (x, i, j), old_regno, - new_reg, subreg_p)) + new_reg, subreg_p, debug_p)) result = true; } } @@ -1970,7 +1975,8 @@ lra_substitute_pseudo_within_insn (rtx_insn *insn, int old_regno, rtx new_reg, bool subreg_p) { rtx loc = insn; - return lra_substitute_pseudo (&loc, old_regno, new_reg, subreg_p); + return lra_substitute_pseudo (&loc, old_regno, new_reg, subreg_p, + DEBUG_INSN_P (insn)); } diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 772879fd90a..64d0308ff01 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2018-02-16 Jakub Jelinek + + PR rtl-optimization/83723 + * gcc.dg/pr83723.c: New test. + 2018-02-16 Richard Biener PR tree-optimization/84399 diff --git a/gcc/testsuite/gcc.dg/pr83723.c b/gcc/testsuite/gcc.dg/pr83723.c new file mode 100644 index 00000000000..a64fe9b56b9 --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr83723.c @@ -0,0 +1,20 @@ +/* PR rtl-optimization/83723 */ +/* { dg-do compile } */ +/* { dg-options "-g -O2" } */ +/* { dg-additional-options "-mfpmath=sse -msse2" { target i?86-*-* x86_64-*-* } } */ +/* { dg-additional-options "-fpie" { target pie } } */ + +int foo (void); +float bar (float); +int *v; + +void +baz (void) +{ + float a = bar (0.0); + bar (a); + if (v) + bar (1.0); + if (a < 1.0) + a = foo () / a; +} -- cgit v1.2.1 From e0573431410eff8653d4b462e276613ab416744c Mon Sep 17 00:00:00 2001 From: jakub Date: Fri, 16 Feb 2018 09:05:35 +0000 Subject: PR bootstrap/84405 * system.h (BROKEN_VALUE_INITIALIZATION): Define for GCC < 4.3. * vec.h (vec_default_construct): Use memset instead of placement new if BROKEN_VALUE_INITIALIZATION is defined. * hash-table.h (hash_table::empty_slow): Use memset instead of value initialization if BROKEN_VALUE_INITIALIZATION is defined. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@257726 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 8 ++++++++ gcc/hash-table.h | 4 ++++ gcc/system.h | 6 ++++++ gcc/vec.h | 4 ++++ 4 files changed, 22 insertions(+) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 76eee8a4b56..85c7880e237 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,13 @@ 2018-02-16 Jakub Jelinek + PR bootstrap/84405 + * system.h (BROKEN_VALUE_INITIALIZATION): Define for GCC < 4.3. + * vec.h (vec_default_construct): Use memset instead of placement new + if BROKEN_VALUE_INITIALIZATION is defined. + * hash-table.h (hash_table::empty_slow): Use + memset instead of value initialization if BROKEN_VALUE_INITIALIZATION + is defined. + PR rtl-optimization/83723 * lra-int.h (lra_substitute_pseudo): Add DEBUG_P argument. * lra.c (lra_substitute_pseudo): Likewise. If true, use diff --git a/gcc/hash-table.h b/gcc/hash-table.h index 8e22cbb660a..706b2370e23 100644 --- a/gcc/hash-table.h +++ b/gcc/hash-table.h @@ -804,8 +804,12 @@ hash_table::empty_slow () } else { +#ifndef BROKEN_VALUE_INITIALIZATION for ( ; size; ++entries, --size) *entries = value_type (); +#else + memset (entries, 0, size * sizeof (value_type)); +#endif } m_n_deleted = 0; m_n_elements = 0; diff --git a/gcc/system.h b/gcc/system.h index 5d9aaae76ec..4abc321c71d 100644 --- a/gcc/system.h +++ b/gcc/system.h @@ -824,6 +824,12 @@ extern void fancy_abort (const char *, int, const char *) /* Some compilers do not allow the use of unsigned char in bitfields. */ #define BOOL_BITFIELD unsigned int +/* GCC older than 4.4 have broken C++ value initialization handling, see + PR11309, PR30111, PR33916, PR82939 and PR84405 for more details. */ +#if GCC_VERSION > 0 && GCC_VERSION < 4004 && !defined(__clang__) +# define BROKEN_VALUE_INITIALIZATION +#endif + /* As the last action in this file, we poison the identifiers that shouldn't be used. Note, luckily gcc-3.0's token-based integrated preprocessor won't trip on poisoned identifiers that arrive from diff --git a/gcc/vec.h b/gcc/vec.h index 24f57b183a3..c707bccf51c 100644 --- a/gcc/vec.h +++ b/gcc/vec.h @@ -490,8 +490,12 @@ template inline void vec_default_construct (T *dst, unsigned n) { +#ifndef BROKEN_VALUE_INITIALIZATION for ( ; n; ++dst, --n) ::new (static_cast(dst)) T (); +#else + memset (dst, '\0', sizeof (T) * n); +#endif } /* Copy-construct N elements in DST from *SRC. */ -- cgit v1.2.1 From 96d5b1a30de244222d924eed5836c07de9605178 Mon Sep 17 00:00:00 2001 From: jakub Date: Fri, 16 Feb 2018 09:26:27 +0000 Subject: PR target/84272 * config/aarch64/cortex-a57-fma-steering.c (fma_forest::merge_forest): Use ++iter rather than iter++ for std::list iterators. (func_fma_steering::dfs): Likewise. Don't delete nodes right away, defer deleting them until all nodes in the forest are processed. Do free even leaf nodes. Change to_process into auto_vec. * g++.dg/opt/pr84272.C: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@257727 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 7 ++++++ gcc/config/aarch64/cortex-a57-fma-steering.c | 35 ++++++++++++++-------------- gcc/testsuite/ChangeLog | 3 +++ gcc/testsuite/g++.dg/opt/pr84272.C | 23 ++++++++++++++++++ 4 files changed, 51 insertions(+), 17 deletions(-) create mode 100644 gcc/testsuite/g++.dg/opt/pr84272.C diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 85c7880e237..67e207385ee 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,12 @@ 2018-02-16 Jakub Jelinek + PR target/84272 + * config/aarch64/cortex-a57-fma-steering.c (fma_forest::merge_forest): + Use ++iter rather than iter++ for std::list iterators. + (func_fma_steering::dfs): Likewise. Don't delete nodes right away, + defer deleting them until all nodes in the forest are processed. Do + free even leaf nodes. Change to_process into auto_vec. + PR bootstrap/84405 * system.h (BROKEN_VALUE_INITIALIZATION): Define for GCC < 4.3. * vec.h (vec_default_construct): Use memset instead of placement new diff --git a/gcc/config/aarch64/cortex-a57-fma-steering.c b/gcc/config/aarch64/cortex-a57-fma-steering.c index 92e3d045996..50e5108aa59 100644 --- a/gcc/config/aarch64/cortex-a57-fma-steering.c +++ b/gcc/config/aarch64/cortex-a57-fma-steering.c @@ -406,7 +406,7 @@ fma_forest::merge_forest (fma_forest *other_forest) /* Update root nodes' pointer to forest. */ for (other_root_iter = other_roots->begin (); - other_root_iter != other_roots->end (); other_root_iter++) + other_root_iter != other_roots->end (); ++other_root_iter) (*other_root_iter)->set_forest (this); /* Remove other_forest from the list of forests and move its tree roots in @@ -847,14 +847,13 @@ func_fma_steering::dfs (void (*process_forest) (fma_forest *), void (*process_node) (fma_forest *, fma_node *), bool free) { - vec to_process; + auto_vec to_process; + auto_vec to_free; std::list::iterator forest_iter; - to_process.create (0); - /* For each forest. */ for (forest_iter = this->m_fma_forests.begin (); - forest_iter != this->m_fma_forests.end (); forest_iter++) + forest_iter != this->m_fma_forests.end (); ++forest_iter) { std::list::iterator root_iter; @@ -863,7 +862,7 @@ func_fma_steering::dfs (void (*process_forest) (fma_forest *), /* For each tree root in this forest. */ for (root_iter = (*forest_iter)->get_roots ()->begin (); - root_iter != (*forest_iter)->get_roots ()->end (); root_iter++) + root_iter != (*forest_iter)->get_roots ()->end (); ++root_iter) { if (process_root) process_root (*forest_iter, *root_iter); @@ -881,28 +880,30 @@ func_fma_steering::dfs (void (*process_forest) (fma_forest *), if (process_node) process_node (*forest_iter, node); - /* Absence of children might indicate an alternate root of a *chain*. - It's ok to skip it here as the chain will be renamed when - processing the canonical root for that chain. */ - if (node->get_children ()->empty ()) - continue; - for (child_iter = node->get_children ()->begin (); - child_iter != node->get_children ()->end (); child_iter++) + child_iter != node->get_children ()->end (); ++child_iter) to_process.safe_push (*child_iter); + + /* Defer freeing so that the process_node callback can access the + parent and children of the node being processed. */ if (free) + to_free.safe_push (node); + } + + if (free) + { + delete *forest_iter; + + while (!to_free.is_empty ()) { + fma_node *node = to_free.pop (); if (node->root_p ()) delete static_cast (node); else delete node; } } - if (free) - delete *forest_iter; } - - to_process.release (); } /* Build the dependency trees of FMUL and FMADD/FMSUB instructions. */ diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 64d0308ff01..2ead408c90a 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,5 +1,8 @@ 2018-02-16 Jakub Jelinek + PR target/84272 + * g++.dg/opt/pr84272.C: New test. + PR rtl-optimization/83723 * gcc.dg/pr83723.c: New test. diff --git a/gcc/testsuite/g++.dg/opt/pr84272.C b/gcc/testsuite/g++.dg/opt/pr84272.C new file mode 100644 index 00000000000..ad4b8a29cd7 --- /dev/null +++ b/gcc/testsuite/g++.dg/opt/pr84272.C @@ -0,0 +1,23 @@ +// PR target/84272 +// { dg-do compile } +// { dg-options "-O2" } +// { dg-additional-options "-march=armv8-a -mtune=cortex-a57" { target aarch64-*-* } } + +struct A +{ + float b, c; + A (); + A (float, float, float); + float operator * (A) + { + float d = b * b + c * c; + return d; + } +}; + +void +foo () +{ + A g[1]; + A h (0, 0, h * g[2]); +} -- cgit v1.2.1 From b7942f6933df7552bcc768fc1a7d5bb9388b1978 Mon Sep 17 00:00:00 2001 From: jkoval Date: Fri, 16 Feb 2018 09:31:49 +0000 Subject: Remove CLWB from Cannonlake. gcc/ * config/i386/i386.c (ix86_option_override_internal): Remove PTA_CLWB from PTA_CANNONLAKE. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@257728 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 5 +++++ gcc/config/i386/i386.c | 5 +++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 67e207385ee..3b6f5c3f0ee 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2018-02-16 Julia Koval + + * config/i386/i386.c (ix86_option_override_internal): Remove PTA_CLWB + from PTA_CANNONLAKE. + 2018-02-16 Jakub Jelinek PR target/84272 diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index fa31f94d3e0..2e82842c022 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -3470,8 +3470,9 @@ ix86_option_override_internal (bool main_args_p, const wide_int_bitmask PTA_SKYLAKE_AVX512 = PTA_SKYLAKE | PTA_AVX512F | PTA_AVX512CD | PTA_AVX512VL | PTA_AVX512BW | PTA_AVX512DQ | PTA_PKU | PTA_CLWB; - const wide_int_bitmask PTA_CANNONLAKE = PTA_SKYLAKE_AVX512 | PTA_AVX512VBMI - | PTA_AVX512IFMA | PTA_SHA; + const wide_int_bitmask PTA_CANNONLAKE = PTA_SKYLAKE | PTA_AVX512F + | PTA_AVX512CD | PTA_AVX512VL | PTA_AVX512BW | PTA_AVX512DQ | PTA_PKU + | PTA_AVX512VBMI | PTA_AVX512IFMA | PTA_SHA; const wide_int_bitmask PTA_ICELAKE = PTA_CANNONLAKE | PTA_AVX512VNNI | PTA_GFNI | PTA_VAES | PTA_AVX512VBMI2 | PTA_VPCLMULQDQ | PTA_AVX512BITALG | PTA_RDPID; -- cgit v1.2.1 From 088e6dfc54dbafb1fe39acbdf36e55748a47bd97 Mon Sep 17 00:00:00 2001 From: marxin Date: Fri, 16 Feb 2018 10:03:47 +0000 Subject: Set proper internal functions fnspec (PR sanitizer/84307). 2018-02-16 Martin Liska PR sanitizer/84307 * internal-fn.def (ASAN_CHECK): Set proper flags. (ASAN_MARK): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@257729 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 6 ++++++ gcc/internal-fn.def | 4 ++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 3b6f5c3f0ee..9e7b575b38a 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2018-02-16 Martin Liska + + PR sanitizer/84307 + * internal-fn.def (ASAN_CHECK): Set proper flags. + (ASAN_MARK): Likewise. + 2018-02-16 Julia Koval * config/i386/i386.c (ix86_option_override_internal): Remove PTA_CLWB diff --git a/gcc/internal-fn.def b/gcc/internal-fn.def index 5970d0e472c..4080e1698ea 100644 --- a/gcc/internal-fn.def +++ b/gcc/internal-fn.def @@ -255,8 +255,8 @@ DEF_INTERNAL_FN (UBSAN_PTR, ECF_LEAF | ECF_NOTHROW, ".R.") DEF_INTERNAL_FN (UBSAN_OBJECT_SIZE, ECF_LEAF | ECF_NOTHROW, NULL) DEF_INTERNAL_FN (ABNORMAL_DISPATCHER, ECF_NORETURN, NULL) DEF_INTERNAL_FN (BUILTIN_EXPECT, ECF_CONST | ECF_LEAF | ECF_NOTHROW, NULL) -DEF_INTERNAL_FN (ASAN_CHECK, ECF_TM_PURE | ECF_LEAF | ECF_NOTHROW, ".R...") -DEF_INTERNAL_FN (ASAN_MARK, ECF_LEAF | ECF_NOTHROW, ".R..") +DEF_INTERNAL_FN (ASAN_CHECK, ECF_TM_PURE | ECF_LEAF | ECF_NOTHROW, "..R..") +DEF_INTERNAL_FN (ASAN_MARK, ECF_LEAF | ECF_NOTHROW, NULL) DEF_INTERNAL_FN (ASAN_POISON, ECF_LEAF | ECF_NOTHROW | ECF_NOVOPS, NULL) DEF_INTERNAL_FN (ASAN_POISON_USE, ECF_LEAF | ECF_NOTHROW | ECF_NOVOPS, NULL) DEF_INTERNAL_FN (ADD_OVERFLOW, ECF_CONST | ECF_LEAF | ECF_NOTHROW, NULL) -- cgit v1.2.1 From d4f2cbd867b3c746736865926f4d82d9ea16cf95 Mon Sep 17 00:00:00 2001 From: itsimbal Date: Fri, 16 Feb 2018 10:19:14 +0000 Subject: Additional fix for PR 84239. PR target/84239 * libgcc/config/i386/shadow-stack-unwind.h (_Unwind_Frames_Extra): Include cetintrin.h not x86intrin.h. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@257730 138bc75d-0d04-0410-961f-82ee72b054a4 --- libgcc/ChangeLog | 8 +++++++- libgcc/config/i386/shadow-stack-unwind.h | 9 ++++++++- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/libgcc/ChangeLog b/libgcc/ChangeLog index 692773d7d2d..012c866f1c9 100644 --- a/libgcc/ChangeLog +++ b/libgcc/ChangeLog @@ -1,7 +1,13 @@ +2018-02-16 Igor Tsimbalist + + PR target/84239 + * config/i386/shadow-stack-unwind.h (_Unwind_Frames_Extra): + Include cetintrin.h not x86intrin.h. + 2018-02-08 Igor Tsimbalist PR target/84239 - * config/i386/shadow-stack-unwind.hi (_Unwind_Frames_Extra): + * config/i386/shadow-stack-unwind.h (_Unwind_Frames_Extra): Use new _get_ssp and _inc_ssp intrinsics. 2018-02-02 Julia Koval diff --git a/libgcc/config/i386/shadow-stack-unwind.h b/libgcc/config/i386/shadow-stack-unwind.h index 416e061dd46..b7c3d98a9dc 100644 --- a/libgcc/config/i386/shadow-stack-unwind.h +++ b/libgcc/config/i386/shadow-stack-unwind.h @@ -22,7 +22,14 @@ a copy of the GCC Runtime Library Exception along with this program; see the files COPYING3 and COPYING.RUNTIME respectively. If not, see . */ -#include +/* NB: We need _get_ssp and _inc_ssp from . But we can't + include which ends up including , which + includes and unconditionally. But we can't + include any libc system headers unconditionally from libgcc. Avoid + including here by defining _IMMINTRIN_H_INCLUDED. */ +#define _IMMINTRIN_H_INCLUDED +#include +#undef _IMMINTRIN_H_INCLUDED /* Unwind the shadow stack for EH. */ #undef _Unwind_Frames_Extra -- cgit v1.2.1 From a5a5010fe7021969848db8c5a787b71781be2201 Mon Sep 17 00:00:00 2001 From: rguenth Date: Fri, 16 Feb 2018 12:01:23 +0000 Subject: 2018-02-16 Richard Biener PR tree-optimization/84417 * tree-ssa.c (non_rewritable_mem_ref_base): Properly constrain the MEM_REF offset when conversion to BIT_FIELD_REF is desired. (non_rewritable_lvalue_p): Likewise, use poly-ints. * gcc.dg/torture/pr84417.c: New testcase. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@257731 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 7 +++++++ gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/gcc.dg/torture/pr84417.c | 9 +++++++++ gcc/tree-ssa.c | 11 ++++++----- 4 files changed, 27 insertions(+), 5 deletions(-) create mode 100644 gcc/testsuite/gcc.dg/torture/pr84417.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 9e7b575b38a..c43637aac5e 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2018-02-16 Richard Biener + + PR tree-optimization/84417 + * tree-ssa.c (non_rewritable_mem_ref_base): Properly constrain + the MEM_REF offset when conversion to BIT_FIELD_REF is desired. + (non_rewritable_lvalue_p): Likewise, use poly-ints. + 2018-02-16 Martin Liska PR sanitizer/84307 diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 2ead408c90a..2d98e2e8024 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2018-02-16 Richard Biener + + PR tree-optimization/84417 + * gcc.dg/torture/pr84417.c: New testcase. + 2018-02-16 Jakub Jelinek PR target/84272 diff --git a/gcc/testsuite/gcc.dg/torture/pr84417.c b/gcc/testsuite/gcc.dg/torture/pr84417.c new file mode 100644 index 00000000000..9c2b023254b --- /dev/null +++ b/gcc/testsuite/gcc.dg/torture/pr84417.c @@ -0,0 +1,9 @@ +/* { dg-do compile } */ +/* { dg-require-effective-target int32plus } */ + +void fn1() +{ + __attribute__((__vector_size__(sizeof(double)))) double x; + double *a = (double *)&x; + *a + *(a + 8446744073709551615LL); +} diff --git a/gcc/tree-ssa.c b/gcc/tree-ssa.c index 949b951e1aa..d197f99bdd2 100644 --- a/gcc/tree-ssa.c +++ b/gcc/tree-ssa.c @@ -1434,6 +1434,7 @@ non_rewritable_mem_ref_base (tree ref) || TREE_CODE (TREE_TYPE (decl)) == COMPLEX_TYPE) && useless_type_conversion_p (TREE_TYPE (base), TREE_TYPE (TREE_TYPE (decl))) + && known_ge (mem_ref_offset (base), 0) && known_gt (wi::to_poly_offset (TYPE_SIZE_UNIT (TREE_TYPE (decl))), mem_ref_offset (base)) && multiple_of_p (sizetype, TREE_OPERAND (base, 1), @@ -1516,11 +1517,11 @@ non_rewritable_lvalue_p (tree lhs) && TYPE_MODE (TREE_TYPE (decl)) != BLKmode && operand_equal_p (TYPE_SIZE_UNIT (TREE_TYPE (lhs)), TYPE_SIZE_UNIT (TREE_TYPE (TREE_TYPE (decl))), 0) - && tree_fits_uhwi_p (TREE_OPERAND (lhs, 1)) - && tree_int_cst_lt (TREE_OPERAND (lhs, 1), - TYPE_SIZE_UNIT (TREE_TYPE (decl))) - && (tree_to_uhwi (TREE_OPERAND (lhs, 1)) - % tree_to_uhwi (TYPE_SIZE_UNIT (TREE_TYPE (lhs)))) == 0) + && known_ge (mem_ref_offset (lhs), 0) + && known_gt (wi::to_poly_offset (TYPE_SIZE_UNIT (TREE_TYPE (decl))), + mem_ref_offset (lhs)) + && multiple_of_p (sizetype, TREE_OPERAND (lhs, 1), + TYPE_SIZE_UNIT (TREE_TYPE (lhs)))) return false; } -- cgit v1.2.1 From 15adae8bbeb4579910eadf636e3b06f3dae4a342 Mon Sep 17 00:00:00 2001 From: rguenth Date: Fri, 16 Feb 2018 12:02:34 +0000 Subject: 2018-02-16 Richard Biener PR bootstrap/82939 * line-map.c (linemap_init): Avoid broken value-init when compiling with GCC 4.2. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@257732 138bc75d-0d04-0410-961f-82ee72b054a4 --- libcpp/ChangeLog | 6 ++++++ libcpp/line-map.c | 5 +++++ 2 files changed, 11 insertions(+) diff --git a/libcpp/ChangeLog b/libcpp/ChangeLog index 2f6e1f21a92..39e8895aeb1 100644 --- a/libcpp/ChangeLog +++ b/libcpp/ChangeLog @@ -1,3 +1,9 @@ +2018-02-16 Richard Biener + + PR bootstrap/82939 + * line-map.c (linemap_init): Avoid broken value-init when compiling + with GCC 4.2. + 2018-02-15 Jason Merrill Jakub Jelinek diff --git a/libcpp/line-map.c b/libcpp/line-map.c index 677acd6dd92..a84084c99f0 100644 --- a/libcpp/line-map.c +++ b/libcpp/line-map.c @@ -344,7 +344,12 @@ void linemap_init (struct line_maps *set, source_location builtin_location) { +#if __GNUC__ == 4 && __GNUC_MINOR__ == 2 && !defined (__clang__) + /* PR33916, needed to fix PR82939. */ + memset (set, 0, sizeof (struct line_maps)); +#else *set = line_maps (); +#endif set->highest_location = RESERVED_LOCATION_COUNT - 1; set->highest_line = RESERVED_LOCATION_COUNT - 1; set->location_adhoc_data_map.htab = -- cgit v1.2.1 From 4a6c533c4e9a45dbe84b48b39c5c798c80807c53 Mon Sep 17 00:00:00 2001 From: rguenth Date: Fri, 16 Feb 2018 13:47:25 +0000 Subject: 2018-02-16 Richard Biener PR tree-optimization/84037 PR tree-optimization/84016 PR target/82862 * config/i386/i386.c (ix86_builtin_vectorization_cost): Adjust vec_construct for the fact we need additional higher latency 128bit inserts for AVX256 and AVX512 vector builds. (ix86_add_stmt_cost): Scale vector construction cost for elementwise loads. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@257734 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 11 +++++++++++ gcc/config/i386/i386.c | 25 ++++++++++++++++++++++++- 2 files changed, 35 insertions(+), 1 deletion(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index c43637aac5e..01ca398965e 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,14 @@ +2018-02-16 Richard Biener + + PR tree-optimization/84037 + PR tree-optimization/84016 + PR target/82862 + * config/i386/i386.c (ix86_builtin_vectorization_cost): + Adjust vec_construct for the fact we need additional higher latency + 128bit inserts for AVX256 and AVX512 vector builds. + (ix86_add_stmt_cost): Scale vector construction cost for + elementwise loads. + 2018-02-16 Richard Biener PR tree-optimization/84417 diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index 2e82842c022..4a968a75a9e 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -45906,7 +45906,18 @@ ix86_builtin_vectorization_cost (enum vect_cost_for_stmt type_of_cost, ix86_cost->sse_op, true); case vec_construct: - return ix86_vec_cost (mode, ix86_cost->sse_op, false); + { + /* N element inserts. */ + int cost = ix86_vec_cost (mode, ix86_cost->sse_op, false); + /* One vinserti128 for combining two SSE vectors for AVX256. */ + if (GET_MODE_BITSIZE (mode) == 256) + cost += ix86_vec_cost (mode, ix86_cost->addss, true); + /* One vinserti64x4 and two vinserti128 for combining SSE + and AVX256 vectors to AVX512. */ + else if (GET_MODE_BITSIZE (mode) == 512) + cost += 3 * ix86_vec_cost (mode, ix86_cost->addss, true); + return cost; + } default: gcc_unreachable (); @@ -50245,6 +50256,18 @@ ix86_add_stmt_cost (void *data, int count, enum vect_cost_for_stmt kind, break; } } + /* If we do elementwise loads into a vector then we are bound by + latency and execution resources for the many scalar loads + (AGU and load ports). Try to account for this by scaling the + construction cost by the number of elements involved. */ + if (kind == vec_construct + && stmt_info + && stmt_info->type == load_vec_info_type + && stmt_info->memory_access_type == VMAT_ELEMENTWISE) + { + stmt_cost = ix86_builtin_vectorization_cost (kind, vectype, misalign); + stmt_cost *= TYPE_VECTOR_SUBPARTS (vectype); + } if (stmt_cost == -1) stmt_cost = ix86_builtin_vectorization_cost (kind, vectype, misalign); -- cgit v1.2.1 From 5a73d351720fa2d6d94a300618050aa8bfa65352 Mon Sep 17 00:00:00 2001 From: olegendo Date: Fri, 16 Feb 2018 13:52:49 +0000 Subject: gcc/ PR target/83831 * config/rx/rx.c (rx_fuse_in_memory_bitop): Convert shift operand to QImode. gcc/testsuite/ PR target/83831 * gcc.target/rx/pr83831.c (test_3, test_6): Adjust test cases. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@257735 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 6 ++++++ gcc/config/rx/rx.c | 2 +- gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/gcc.target/rx/pr83831.c | 14 ++++++++------ 4 files changed, 20 insertions(+), 7 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 01ca398965e..a5d5fdefe8a 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2018-02-16 Oleg Endo + + PR target/83831 + * config/rx/rx.c (rx_fuse_in_memory_bitop): Convert shift operand + to QImode. + 2018-02-16 Richard Biener PR tree-optimization/84037 diff --git a/gcc/config/rx/rx.c b/gcc/config/rx/rx.c index 0eaf418cd71..de7af86f9b0 100644 --- a/gcc/config/rx/rx.c +++ b/gcc/config/rx/rx.c @@ -3515,7 +3515,7 @@ rx_fuse_in_memory_bitop (rtx* operands, rtx_insn* curr_insn, if (volatile_insn_p (PATTERN (i)) || CALL_P (i)) return false; - emit_insn (gen_insn (mem, operands[1])); + emit_insn (gen_insn (mem, gen_lowpart (QImode, operands[1]))); set_insn_deleted (op2_def.insn); set_insn_deleted (op0_use); return true; diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 2d98e2e8024..7cd64bb15ff 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2018-02-14 Oleg Endo + + PR target/83831 + * gcc.target/rx/pr83831.c (test_3, test_6): Adjust test cases. + 2018-02-16 Richard Biener PR tree-optimization/84417 diff --git a/gcc/testsuite/gcc.target/rx/pr83831.c b/gcc/testsuite/gcc.target/rx/pr83831.c index 1bd1e2b429b..27d4a89cff4 100644 --- a/gcc/testsuite/gcc.target/rx/pr83831.c +++ b/gcc/testsuite/gcc.target/rx/pr83831.c @@ -1,8 +1,8 @@ /* { dg-do compile } */ /* { dg-options "-O1" } */ /* { dg-final { scan-assembler-times "bclr" 6 } } */ -/* { dg-final { scan-assembler-times "bset" 6 } } */ -/* { dg-final { scan-assembler-times "bnot" 6 } } */ +/* { dg-final { scan-assembler-times "bset" 7 } } */ +/* { dg-final { scan-assembler-times "bnot" 7 } } */ void test_0 (char* x, unsigned int y) @@ -29,13 +29,14 @@ test_2 (unsigned int x) } void -test_3 (char* x, unsigned int y) +test_3 (char* x, unsigned int y, unsigned int z) { - /* Expect 4x bset here. */ + /* Expect 5x bset here. */ x[0] |= 0x10; x[1] = y | (1 << 1); x[2] |= 0x10; x[65000] |= 0x10; + x[5] |= 1 << z; } unsigned int @@ -53,13 +54,14 @@ test_5 (unsigned int x) } void -test_6 (char* x, unsigned int y) +test_6 (char* x, unsigned int y, unsigned int z) { - /* Expect 4x bnot here. */ + /* Expect 5x bnot here. */ x[0] ^= 0x10; x[1] = y ^ (1 << 1); x[2] ^= 0x10; x[65000] ^= 0x10; + x[5] ^= 1 << z; } unsigned int -- cgit v1.2.1 From ad0959559ad5df2dc8f6dbebd5a39e529e9785e9 Mon Sep 17 00:00:00 2001 From: segher Date: Fri, 16 Feb 2018 14:03:17 +0000 Subject: combine: Fix problem with RTL checking As Jakub found, after my recent combine patch at least on x86 problems show up with RTL checking enabled. This is because the I2 generated by a successful instruction combination can write not only a register but it can also write a paradoxical subreg of one. This fixes it. * combine.c (try_combine): When adjusting LOG_LINKS for the destination that moved to I2, also allow destinations that are a paradoxical subreg (instead of a normal reg). git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@257736 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 6 ++++++ gcc/combine.c | 7 ++++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index a5d5fdefe8a..332a38f69fc 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2018-02-16 Segher Boessenkool + + * combine.c (try_combine): When adjusting LOG_LINKS for the destination + that moved to I2, also allow destinations that are a paradoxical + subreg (instead of a normal reg). + 2018-02-16 Oleg Endo PR target/83831 diff --git a/gcc/combine.c b/gcc/combine.c index c4d55eb85a4..6b761c609ae 100644 --- a/gcc/combine.c +++ b/gcc/combine.c @@ -4283,7 +4283,12 @@ try_combine (rtx_insn *i3, rtx_insn *i2, rtx_insn *i1, rtx_insn *i0, if (GET_CODE (x) == PARALLEL) x = XVECEXP (newi2pat, 0, 0); - unsigned int regno = REGNO (SET_DEST (x)); + /* It can only be a SET of a REG or of a paradoxical SUBREG of a REG. */ + x = SET_DEST (x); + if (paradoxical_subreg_p (x)) + x = SUBREG_REG (x); + + unsigned int regno = REGNO (x); bool done = false; for (rtx_insn *insn = NEXT_INSN (i3); -- cgit v1.2.1 From 2aa07fb25d485c363a00e4969086d1bca52e3ed2 Mon Sep 17 00:00:00 2001 From: nathan Date: Fri, 16 Feb 2018 14:30:55 +0000 Subject: [PR c++/84375] Fix ICE after bad friend https://gcc.gnu.org/ml/gcc-patches/2018-02/msg00987.html PR c++/84375 * name-lookup.c (do_pushdecl): Bail out on bad local friend injection. * g++.dg/lookup/pr84375.C: New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@257739 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/cp/ChangeLog | 5 +++++ gcc/cp/name-lookup.c | 16 ++++++++++------ gcc/testsuite/ChangeLog | 7 ++++++- gcc/testsuite/g++.dg/lookup/pr84375.C | 9 +++++++++ 4 files changed, 30 insertions(+), 7 deletions(-) create mode 100644 gcc/testsuite/g++.dg/lookup/pr84375.C diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index ecd52d04b97..ee3ade9bd05 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,8 @@ +2018-02-16 Nathan Sidwell + + PR c++/84375 + * name-lookup.c (do_pushdecl): Bail out on bad local friend injection. + 2018-02-15 Jason Merrill PR c++/83227 - C++17 ICE with init-list derived-to-base conversion. diff --git a/gcc/cp/name-lookup.c b/gcc/cp/name-lookup.c index e5a34003702..47cee30338d 100644 --- a/gcc/cp/name-lookup.c +++ b/gcc/cp/name-lookup.c @@ -3079,12 +3079,16 @@ do_pushdecl (tree decl, bool is_friend) if (is_friend) { if (level->kind != sk_namespace) - /* In a local class, a friend function declaration must - find a matching decl in the innermost non-class scope. - [class.friend/11] */ - error ("friend declaration %qD in local class without " - "prior local declaration", decl); - else if (!flag_friend_injection) + { + /* In a local class, a friend function declaration must + find a matching decl in the innermost non-class scope. + [class.friend/11] */ + error ("friend declaration %qD in local class without " + "prior local declaration", decl); + /* Don't attempt to push it. */ + return error_mark_node; + } + if (!flag_friend_injection) /* Hide it from ordinary lookup. */ DECL_ANTICIPATED (decl) = DECL_HIDDEN_FRIEND_P (decl) = true; } diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 7cd64bb15ff..58eb38582d9 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2018-02-16 Nathan Sidwell + + PR c++/84375 + * g++.dg/lookup/pr84375.C: New. + 2018-02-14 Oleg Endo PR target/83831 @@ -29,7 +34,7 @@ 2018-02-15 Martin Sebor * gcc.dg/lto/README (dg-lto-warning, dg-lto-message): Document new - directives. + directives. 2018-02-15 Janus Weil diff --git a/gcc/testsuite/g++.dg/lookup/pr84375.C b/gcc/testsuite/g++.dg/lookup/pr84375.C new file mode 100644 index 00000000000..24cdcb2c407 --- /dev/null +++ b/gcc/testsuite/g++.dg/lookup/pr84375.C @@ -0,0 +1,9 @@ +// PR c++/84375 ICE after error + +void foo() +{ + struct A + { + friend void A(); // { dg-error "local class without prior local" } + }; +} -- cgit v1.2.1 From 1a60f00eee5463699e2cbddc91fd559915091c7b Mon Sep 17 00:00:00 2001 From: paolo Date: Fri, 16 Feb 2018 15:34:58 +0000 Subject: /cp 2018-02-16 Paolo Carlini PR c++/82468 * decl.c (check_special_function_return_type): Reject template template parameter in deduction guide. /testsuite 2018-02-16 Paolo Carlini PR c++/82468 * g++.dg/cpp1z/class-deduction48.C: New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@257740 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/cp/ChangeLog | 6 ++++++ gcc/cp/decl.c | 9 ++++++++- gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/g++.dg/cpp1z/class-deduction48.C | 5 +++++ 4 files changed, 24 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/g++.dg/cpp1z/class-deduction48.C diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index ee3ade9bd05..1da0a4d4a53 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,9 @@ +2018-02-16 Paolo Carlini + + PR c++/82468 + * decl.c (check_special_function_return_type): Reject template + template parameter in deduction guide. + 2018-02-16 Nathan Sidwell PR c++/84375 diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c index 3ccea9e6a45..fbcc778f0cc 100644 --- a/gcc/cp/decl.c +++ b/gcc/cp/decl.c @@ -9834,7 +9834,14 @@ check_special_function_return_type (special_function_kind sfk, error_at (smallest_type_quals_location (type_quals, locations), "qualifiers are not allowed on declaration of " "deduction guide"); - type = make_template_placeholder (CLASSTYPE_TI_TEMPLATE (optype)); + if (TREE_CODE (optype) == TEMPLATE_TEMPLATE_PARM) + { + error ("template template parameter %qT in declaration of " + "deduction guide", optype); + type = error_mark_node; + } + else + type = make_template_placeholder (CLASSTYPE_TI_TEMPLATE (optype)); for (int i = 0; i < ds_last; ++i) if (i != ds_explicit && locations[i]) error_at (locations[i], diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 58eb38582d9..068f169ed6d 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2018-02-16 Paolo Carlini + + PR c++/82468 + * g++.dg/cpp1z/class-deduction48.C: New. + 2018-02-16 Nathan Sidwell PR c++/84375 diff --git a/gcc/testsuite/g++.dg/cpp1z/class-deduction48.C b/gcc/testsuite/g++.dg/cpp1z/class-deduction48.C new file mode 100644 index 00000000000..1cfdc44a993 --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp1z/class-deduction48.C @@ -0,0 +1,5 @@ +// PR c++/82468 +// { dg-options -std=c++17 } + +template